ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 과제 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문 밖에서 리스트가 비어있는 경우와 그렇지 않은 경우를 나누어서 코드를 작성했다.

     

    그렇게 복잡하지 않은 문제인데도 자꾸 뭐 하나 빠트리는 게 너무 짜증난다(...) 더 꼼꼼하게 확인하는 습관을 가져야겠다...

    댓글

Designed by Tistory.