태지쌤

로봇 & 코딩교육 No.1 크리에이터

파이썬

ChatGPT로 파이썬 코드 생성하기

태지쌤 2023. 3. 3. 20:30
반응형

 

ChatGPT가 파이썬 연습문제도 풀어준다.

문제만 주고 코드를 만들어보도록 해봤다.

 

문제) 아래의 두 데이터(a,b)의 요소에서

중복된 수를 제외한 새로운 객체(c)를 생성합니다.

 

a = (1,2,5,2,3,8,4)

b = (6,7,1,7,4,5,5)

새로 만들어진 객체(c)의 요소를

내림차순으로 정렬하고

출력하는 파이썬 코드를 작성해줘

 

a = (1,2,5,2,3,8,4)
b = (6,7,1,7,4,5,5)

c = set(a) | set(b)  # a와 b의 합집합을 구해서 중복을 제거하고 새로운 객체 c를 생성
c = sorted(list(c), reverse=True)  # 내림차순으로 정렬
print(c)
 

우선, set() 함수를 사용하여 a b의 합집합을 구합니다.

합집합은 중복된 원소가 하나만 남도록 합쳐진 집합이므로,

중복을 제거하는 효과가 있습니다.

그리고 나서 list() 함수를 사용하여

set 객체를 리스트로 변환하고,

sorted() 함수를 사용하여 리스트를 내림차순으로 정렬합니다.

마지막으로 print() 함수를 사용하여 결과를 출력합니다.

 

두번째 문제 ㅋㅋㅋ

다음과 같이 과일의 이름과 가격을

매핑한 딕셔너리를 생성합니다.

사과 : 5000, 배 : 10000, 딸기 : 12000,

포도 : 20000, 바나나 : 3000

프로그램을 실행하면 과일의 목록과 가격을 출력하세요.

사용자에게 과일과 구매 수량을 입력 받아

구매 금액을 반환하는 total_price 함수를 작성하세요.

total_price 함수로부터 반환 된

최종 구매 가격을 출력하세요.

 

# 과일과 가격 정보를 딕셔너리에 저장
fruit_dict = {'사과': 5000, '배': 10000, '딸기': 12000, '포도': 20000, '바나나': 3000}

# 과일 목록과 가격을 출력
print('--- 과일 가격표 ---')
for fruit, price in fruit_dict.items():
    print(f'{fruit}: {price}원')

# 구매 금액을 계산하는 함수 정의
def total_price(fruit, quantity):
    price = fruit_dict.get(fruit)  # 입력된 과일의 가격을 조회
    if price is None:  # 과일 이름이 잘못 입력되었을 경우
        return None
    return price * quantity  # 가격과 수량을 곱한 총 구매 금액을 반환

# 사용자로부터 과일 이름과 구매 수량을 입력받음
fruit = input('구매할 과일 이름을 입력하세요: ')
quantity = int(input('구매할 수량을 입력하세요: '))

# total_price 함수를 호출하여 총 구매 금액을 계산하고 출력
total = total_price(fruit, quantity)
if total is None:  # 과일 이름이 잘못 입력되었을 경우
    print('잘못된 과일 이름입니다.')
else:  # 정상적으로 계산된 경우
    print(f'총 구매 금액은 {total}원 입니다.')
 

우선, 과일의 이름과 가격을 매핑한

딕셔너리 fruit_dict를 생성합니다.

그리고 나서, for 반복문을 사용하여

과일 목록과 가격을 출력합니다.

다음으로, total_price() 함수를 정의합니다.

이 함수는 입력된 과일 이름과 수량을 기반으로

총 구매 금액을 계산하여 반환합니다.

fruit_dict.get(fruit) 코드를 사용하여

입력된 과일 이름에 해당하는 가격을 조회합니다.

만약 과일 이름이 잘못 입력되었을 경우

None을 반환합니다.

마지막으로, input() 함수를 사용하여

사용자로부터 과일 이름과 구매 수량을 입력받습니다.

total_price() 함수를 호출하여

총 구매 금액을 계산하고 출력합니다.

total_price() 함수가 None을 반환한 경우는

잘못된 과일 이름이 입력된 경우이므로

이를 처리하기 위해 if 조건문을 사용합니다.

 

위 코드에서 약간의 로직(논리)

수정을 요구해봤어요.

주어진 코드에서는 사용자로부터

과일 이름과 수량을 입력 받은 후,

총 구매 금액을 출력하는데

바로 이어서 프로그램이 종료되므로,

"선택완료" 입력을 받을 수 있는 부분이 없습니다.

따라서, "선택완료" 입력을 받으면

총 구매 금액을 출력하는 코드를 추가해 주어야 합니다.

다음은 수정된 코드입니다.

 

# 과일과 가격 정보를 딕셔너리에 저장
fruit_dict = {'사과': 5000, '배': 10000, '딸기': 12000, '포도': 20000, '바나나': 3000}

# 과일 목록과 가격을 출력
print('--- 과일 가격표 ---')
for fruit, price in fruit_dict.items():
    print(f'{fruit}: {price}원')

# 구매 금액을 계산하는 함수 정의
def total_price(fruit, quantity):
    price = fruit_dict.get(fruit)  # 입력된 과일의 가격을 조회
    if price is None:  # 과일 이름이 잘못 입력되었을 경우
        return None
    return price * quantity  # 가격과 수량을 곱한 총 구매 금액을 반환

# 사용자로부터 과일 이름과 구매 수량을 입력받음
fruit = input('구매할 과일 이름을 입력하세요: ')
quantity = int(input('구매할 수량을 입력하세요: '))

total = total_price(fruit, quantity)
if total is None:  # 과일 이름이 잘못 입력되었을 경우
    print('잘못된 과일 이름입니다.')
else:  # 정상적으로 계산된 경우
    print(f'총 구매 금액은 {total}원 입니다.')

# '선택완료'를 입력받으면 종료하도록 수정
while True:
    choice = input('계속 구매하시겠습니까? (예/아니오): ')
    if choice == '아니오':
        break
    elif choice == '예':
        fruit = input('구매할 과일 이름을 입력하세요: ')
        quantity = int(input('구매할 수량을 입력하세요: '))
        total = total_price(fruit, quantity)
        if total is None:  # 과일 이름이 잘못 입력되었을 경우
            print('잘못된 과일 이름입니다.')
        else:  # 정상적으로 계산된 경우
            print(f'총 구매 금액은 {total}원 입니다.')
    else:
        print('잘못된 입력입니다.')
print('종료합니다.')
 

수정된 코드에서는 while 반복문을 사용하여

사용자로부터 "계속 구매하시겠습니까?"라는

질문을 반복해서 묻습니다.

사용자가 "아니오"를 입력하면

반복문을 빠져나와 프로그램을 종료합니다.

 

보시면 주석까지 첨부하여

왜 이런 코드를 제시했는지

나름의 이유까지 제시해줍니다.

ChatGPT가 제시한 코드를 바탕으로

약간의 수정을 가한다면

훨씬 빠르게 코드를 작성할 수 있을 것 같아요.

 

문제를 조금 더 구체화해서

다시 물어봤어요

 

다음과 같이 과일의 이름과 가격을

매핑한 딕셔너리를 생성합니다.

사과 : 5000, 배 : 10000, 딸기 : 12000,

포도 : 20000, 바나나 : 3000

 

1.프로그램을 실행하면

과일의 목록과 가격을 출력하세요.

2.사용자에게 과일과 구매 수량을 입력 받아

구매 금액을 반환하는

total_price 함수를 작성하세요.

3.사용자에게 '계속'을 입력 받으면

다른 과일을 추가로 입력 받고,

'계산'을 입력 받으면

최종 구매 가격을 출력하세요.

 

fruit_dict = {'사과': 5000, '배': 10000, '딸기': 12000, '포도': 20000, '바나나': 3000}

def total_price(fruit, quantity):
    price = fruit_dict.get(fruit)  # 입력된 과일의 가격을 조회
    if fruit not in fruit_dict:  # 과일 이름이 잘못 입력되었을 경우
        return None
    return price * quantity

# 과일 목록과 가격 출력
print('=== 과일 목록과 가격 ===')
for fruit, price in fruit_dict.items():
    print(fruit, ':', price)

order_dict = {}  # 주문 정보를 담을 딕셔너리 초기화

while True:
    # 과일과 수량 입력받기
    fruit = input('과일을 입력하세요: ')
    if fruit == '계산':
        break
    if fruit not in fruit_dict:
        print('잘못된 과일 이름입니다.')
        continue
    quantity = int(input('수량을 입력하세요: '))
    order_dict[fruit] = quantity  # 주문 정보를 딕셔너리에 추가
    
# 주문 정보 출력
print('=== 주문 정보 ===')
for fruit, quantity in order_dict.items():
    price = total_price(fruit, quantity)
    print(fruit, ':', quantity, '개 -', price, '원')

# 최종 구매 가격 출력
total_price = sum([total_price(fruit, quantity) for fruit, quantity in order_dict.items()])
print('총 구매 가격:', total_price, '원')
 

ChatGPT와 주거니 받거니하며

제가 원하는 코드에 가깝게 얻을 수 있어요.

 맥북

반응형