여러 모양의 자료 만들기 연습문제

2023. 3. 4. 23:35Python/실전 예제로 배우는 파이썬 프로그래밍

[문제 1]

다음 lst 변수를 대상으로 각 단계별로 list를 연산하시오.

< 각 단계별 출력 결과 예시>

단계1: [10, 1, 5, 2, 10, 1, 5, 2]
단계2: [10, 1, 5, 2, 10, 1, 5, 2, 20]
단계3: [1, 2, 1, 2] 

 

lst = [10, 1, 5, 2]	# list 생성

# 단계1: lst 원소를 2배 생성하여 result 변수에 저장 및 출력하기
result = lst * 2
result

[10, 1, 5, 2, 10, 1, 5, 2]

# 단계 2 : lst의 첫 번째 원소에 2를 곱하여 result 변수에 추가 및 출력하기

result.append(lst[0] * 2)
result

[10, 1, 5, 2, 10, 1, 5, 2, 20]

# 단계 3 : result의 홀수 번째 원소만 result2 변수에 추가 및 출력하기

result2 = result[1::2]

result2 = [] # 빈 list
i = 0 
for n in result:
    if (i % 2) != 0 :
        result2.append(n)
    i += 1

print('단계3 :', result2)

단계3 : [1, 2, 1, 2]

[문제 2] list 원소 추가 및 요소 검사하기

A형 list 크기를 키보드로 입력받은 후, 입력 받은 크기만큼 임의 숫자를 list에 추가하고, list의 크기를 출력하시오.

<출력 결과 예시>

vector 수 : 3
4
2
5
vector 크기 : 3
# A형 문제
size = int(input('vector 수: '))	# vector 크기 입력

lst = []	# 빈 list
for i in range(size) :
	lst.append(int(input()))	# list에 숫자 입력(prompt 없음)

print('vector 크기 : ', len(lst))

vector 수: 3
4
2
5
vector 크기 :  3

B형 list 크기를 키보드로 입력 받은 후, 입력 받은 크기만큼 임의 숫자를 list에 추가한다. 이후 list에서 찾을 값을 키보드로 입력한 후, 해당 값이 list에 있으면 "YES", 없으면 "NO"를 출력하시오.

<출력 결과 예시>

vector 수 : 5
1
2
3
4
5
3
YES
# B형 문제
if int(input()) in lst :	# 찾을 값 입력(prompt 없음)
	print('YES')
else : 
	print('NO')
    
5
NO

[문제 3] list 내포를 이용하여 문자열 처리하기

A형 message 변수를 대상으로 'spam' 원소는 1 'ham' 원소는 0으로 dummy 변수를 생성하시오.

<조건> list + for 형식 적용

<출력결과 예시>
[1, 0, 1, 0, 1]
message = ['spam', 'ham', 'spam', 'ham', 'spam']

# A형 문제
spam_list = [msg for msg in message if msg == 'spam']
print(spam_list)    # ['spam', 'spam', 'spam']

B형 message 변수를 대상으로 'spam' 원소만 추출하여 spam_list에 추가하시오.

<조건> list + for + if 형식 적용

<출력결과 예시>

['spam', 'spam', 'spam']

 message = ['spam', 'ham', 'spam', 'ham', 'spam']

# B형 문제
# dummy = [ 실행문 for msg in message]
dummy = [ 1 if msg == 'spam' else 0 for msg in message]
# 실행문 : if문 3항 연산자 이용
print(dummy)    # [1, 0, 1, 0, 1]

[문제 4]

position 변수를 대상으로 중복되지 않은 직위와 직위별 빈도수를 출력하시오.

<출력결과 예시>

중복되지 않은 직위 : ['사장', '과장', '대리', '부장']
각 직위별 빈도수 : {'과장': 2, '부장': 1, '대리': 2, '사장': 1} 

position = ['과장', '부장', '대리', '사장', '대리', '과장']

position = ['과장', '부장', '대리', '사장', '대리', '과장']
uni_position = list(set(position))  # random
print('중복되지 않은 직위 :', uni_position)

position_cnt = {}
for p in position :
    position_cnt[p] = position_cnt.get(p, 0) + 1

print('각 직위별 빈도수 :', position_cnt)

중복되지 않은 직위 : ['사장', '대리', '부장', '과장']
각 직위별 빈도수 : {'과장': 2, '부장': 1, '대리': 2, '사장': 1}