본문 바로가기
문제풀이/창의적 프로그래밍을 위한 파이썬

[창의적 프로그래밍을 위한 파이썬] 8장 연습문제

by 그적 2021. 5. 23.

1. 아래의 예시를 보고 list형과 tuple형 중 선택하여 각각 빈칸을 채워보자.

홈페이지에서 정보 수정 및 추가를 위해 사용할 수 있는 자료형은 ( list형 )이고, 해킹으로 인한 정보 수정을 막기 위해 사용할 수 있는 자료형은 ( tuple형 )이다.

 

2. list와 tuple형은 index 구조이기 때문에 ( slice기능 )과 ( 연산 )이 가능하다.

 

3. 맞으면 O, 틀리면 X를 표시해보자.

[O, X문제]

1번.
>>> tuple = ('Hello', 'My', 'name', 'is', '예슬')
>>> tuple[4] = '지수'
위의 프로그램을 실행했을 경우, tuple의 원소 값은 ('Hello', 'My', 'name', 'is', '지수') 이다. (X)

2번.
tuple에서도 list와 같이 min() 함수, max() 함수를 사용할 수 있다. (O)

3번.
tuple에서는 삽입, 삭제는 불가하나 원소의 순서 교체는 가능하다. (X)  // 원소 교체도 불가함.

4번.
>>> arr = (35, 45, 2, 10, 11)
>>> arr[3]+arr[1]
위의 프로그램읠 결과 값은 (10, 45)이다. (X) // 55이다.

 

 

4. 다음은 주어진 list에서 중복된 원소를 제거하는 프로그램이다. 괄호 안에 들어갈 내용을 채워보자.

animal_list = ['dog', 'pig', 'tiger', 'eagle', 'cat', 'dog', 'pig', 'lion']
animal_set = set(animal_list)
new_animal_list = list(animal_set)

print(animal_list)     #['dog', 'pig', 'tiger', 'eagle', 'cat', 'dog', 'pig', 'lion']
print(animal_set)     #{'pig', 'cat', 'dog', 'eagle', 'tiger', 'lion'}
print(new_animal_list)     #['pig', 'cat', 'dog', 'eagle', 'tiger', 'lion']

 

 

5. dictionary형은 ( key )와 ( value )가 한 쌍을 이루는 원소로 구성되어 있다.

 

 

6. arr=(1,2,3)이 선언되었다고 할 때, arr[1]과 arr[2]를 바꾼 list인 brr를 생성하기 위한 프로그램을 작성해보자. (단, brr는 직접적인 숫자 입력 방식의 원소 할당 불가).

arr=(1,2,3)

brr = list(arr)
brr[2] = arr[1]
brr[1] = arr[2]

print(brr)     #[1, 3, 2]

 

 

7. 어느 교실 학생들의 수학 점수는 10, 9, 9, 6, 7, 6, 8, 9이다. 이 학생들이 어떤 점수를 받았는지 확인할 수 있는 프로그램을 작성해보자.

 

 

 

8. 아래의 색칠한 그림 영역에 해당하는 원소를 추출하는 프로그램을 작성해보자.

all = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M'}
inside = {'B', 'C', 'D', 'E', 'H', 'J', 'K', 'L'}

print(all-inside)     #{'F', 'G', 'A', 'M', 'I'}

 

 

9. 어느 커피숍에는 메뉴가 4가지 있다. Americano, Cafe latte, Green Tea latte, Mocha latte 각 메뉴의 가격은 2000원, 2500원, 3000원, 3500원이다. 이 목록을 dictionary로 작성해보고 Americano와 Vanila latte가 있는지 없는지 확인해보자.

dic = {'Americano':2000, 'Cafe latte':2500, 'Green Tea latte':3000, 'Mocha latte':3500}

if 'Americano' in dic:
    print('Americano 있음.')
else:
    print('Americano 없음.')

if 'Vanila latte' in dic:
    print('Vanila latte 있음')
else:    
    print('Vanila latte 없음')

 

 

10. 어느 식당의 메뉴와 가격은 돈가스 5000원, 생선가스 5500원, 우동 2500원, 초밥 세트 9000원이다. 이 메뉴들을 dictionary를 이용하여 작성해보고 각각의 메뉴와 가격을 순차적으로 출력하는 프로그램을 작성해보자.

dic = {'돈가스':5000, '생선가스':5500, '우동':2500, '초밥 세트':9000}
print(dic)     #{'돈가스': 5000, '생선가스': 5500, '우동': 2500, '초밥 세트': 9000}

 

 

11. 집합 A={4,3,2,7,8,10,1,9}와 B={0,1,3,5,6,8,9,10,4}가 있다. 이때, 집합 A가 집합 B의 부분집합인지 확인하고 아닐 경우 이 두 집합의 합집합을 구하는 프로그램을 작성해보자.

A={4,3,2,7,8,10,1,9}
B={0,1,3,5,6,8,9,10,4}

if A-B=={}:
    print('A는 B의 부분집합이다.')
else:
    print('A는 B의 부분집합이 아니다.')     # A는 B의 부분집합이 아니다.
    print(A|B)     # {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

 

 

12. 영수의 집에 과일이 아래 표와 같이 있을 때, 5개 이하인 과일은 5개가 되도록 사려고 할 때, 사야 할 과일과 그에 드는 각각의 비용과 총비용을 출력하는 프로그램을 작성해보자.

dic1 = {'배':2000, '사과':1500, '딸기':1800, '참외':2300}
dic2 = {'배':3, '사과':5, '딸기':2, '참외':5}
total = 0
cost = 0


if dic2['배']<5:
    num = 5-dic2['배']
    cost = num*dic1['배']
    print('배',num,'개를 구매하셔서',cost,'원입니다.')
    total += cost
if dic2['사과']<5:
    num = 5-dic2['사과']
    cost = num*dic1['사과']
    print('사과',num,'개를 구매하셔서',cost,'원입니다.')
    total += cost
if dic2['딸기']<5:
    num = 5-dic2['딸기']
    cost = num*dic1['딸기']
    print('딸기',num,'개를 구매하셔서',cost,'원입니다.')
    total += cost
if dic2['참외']<5:
    num = 5-dic2['참외']
    cost = num*dic1['참외']
    print('참',num,'개를 구매하셔서',cost,'원입니다.')
    
print('총 금액은', total,'원입니다.')
#배 2 개를 구매하셔서 4000 원입니다.
#딸기 3 개를 구매하셔서 5400 원입니다.
#총 금액은 9400 원입니다.

 

 

13. 한 판매 회사에서는 판매 실적 점수와 고객 평가 점수를 통해 우수 제품을 선발하고자 한다. 아래와 같이 결과가 나왔을 때, 판매 실적 점수가 4 이상이고 고객 평가 점수가 4 이상인 제품은 우수 제품이 되고, 두 점수 모두 4 미만인 제품은 판매중지 목록에 들어가게 된다. 이때, 우수 제품을 출력하고 로션이 판매 중지에 해당하는지 판단하는 프로그램을 작성해보자.

dic = {'비누':[3,2], '칫솔':[5,4], '샴푸':[2,1], '치약':[4,4], '로션':[5,3]}

pro_no = []
pro_yes = []

if dic['비누'][0]<4 and dic['비누'][1]<4:
    pro_no.append('비누')
elif dic['비누'][0]>=4 and dic['비누'][1]>=4:
    pro_yes.append('비누')

if dic['칫솔'][0]<4 and dic['칫솔'][1]<4:
    pro_no.append('칫솔')
elif dic['칫솔'][0]>=4 and dic['칫솔'][1]>=4:
    pro_yes.append('칫솔')

if dic['샴푸'][0]<4 and dic['샴푸'][1]<4:
    pro_no.append('샴푸')
elif dic['샴푸'][0]>=4 and dic['샴푸'][1]>=4:
    pro_yes.append('샴푸')

if dic['치약'][0]<4 and dic['치약'][1]<4:
    pro_no.append('치약')
elif dic['치약'][0]>=4 and dic['치약'][1]>=4:
    pro_yes.append('치약')

if dic['로션'][0]<4 and dic['로션'][1]<4:
    pro_no.append('비누')
elif dic['로션'][0]>=4 and dic['로션'][1]>=4:
    pro_yes.append('로션')

print('우수 제품은', pro_yes,'입니다.')     #우수 제품은 ['칫솔', '치약'] 입니다.
print('판매 중지된 상품은',pro_no,'입니다.')     #판매 중지된 상품은 ['비누', '샴푸'] 입니다.

 

 

14. 어느 문구점에서 판매하는 연필은 200원 펜은 800원, 지우개는 500원, 자는 300원이다. 이 목록을 dictionary형을 이용하여 작성해보고 가격만 list형으로 출력해보자.

dic = {'연필':200, '펜':800, '지우개':500, '자':300}

print(dic.values())     #dict_values([200, 800, 500, 300])

 

댓글