-
과제 1 - 2번 문제학교 공부/파이썬 2021. 1. 11. 15:50
score_list = [] score_sum = 0 while True : score = input('점수를 입력하세요: ') if score != 'Quit' : score_list.append(int(score)) else : for i in range(len(score_list)) : score_sum += score_list[i] score_avg = score_sum / len(score_list) if score_avg >= 90 : grade = 'A' elif score_avg >= 80 : grade = 'B' else : grade = 'C' print("입력된 점수의 총합은 %d점이고, 평균은 %.2f점입니다. 학점은 '%s'입니다." %(score_sum, score_avg, grade)) break
처음에는 Quit을 입력하면 그때 결과가 출력된다고 생각해서 Quit을 입력했을 때와 그렇지 않을 때(숫자를 입력했을 때)로만 나눠서 코드를 작성했다. 그런데 점수를 한 번도 입력하지 않고 바로 Quit을 입력하는 경우를 미처 생각하지 못했다... 이 코드에서 바로 Quit을 입력하면 평균과 학점이 제대로 계산되지 않기 때문에 오류가 발생한다.
score_list = [] # 점수들을 저장하기 위한 리스트 score_sum = 0 # 점수의 총합 while True : score = input('점수를 입력하세요: ') if score == 'Quit' : # Quit을 입력받으면 while문을 빠져나옴 break score_list.append(int(score)) # 그렇지 않으면 리스트에 값을 추가함 if len(score_list) == 0 : # 입력받은 점수가 없다면 계산을 하지 않음 print('입력된 점수가 없습니다.') else : # 입력받은 점수가 있는 경우 for i in range(len(score_list)) : # 총합 계산 score_sum += score_list[i] score_avg = score_sum / len(score_list) # 평균 계산 if score_avg >= 90 : # 학점 계산 grade = 'A' elif score_avg >= 80 : grade = 'B' else : grade = 'C' print("입력된 점수의 총합은 %d점이고, 평균은 %.2f점입니다. 학점은 '%s'입니다." %(score_sum, score_avg, grade)) # 결과 출력
기존 코드에서 다시 if-else문을 이용해서 점수가 하나도 입력되지 않았을 때 코드를 짤 수도 있겠지만 더욱 깔끔한 코드를 위해서 while문 밖에서 리스트가 비어있는 경우와 그렇지 않은 경우를 나누어서 코드를 작성했다.
그렇게 복잡하지 않은 문제인데도 자꾸 뭐 하나 빠트리는 게 너무 짜증난다(...) 더 꼼꼼하게 확인하는 습관을 가져야겠다...
'학교 공부 > 파이썬' 카테고리의 다른 글
파이썬 tkinter 위젯변수, get(), set() (0) 2021.01.16 파이썬 변수 재할당 관련 (+ C언어 변수와 비교?!) (0) 2020.12.29