프로그램

[파이썬] 문제 : 10명의 6개 점수 입력 받아 평균 구하기

오디세이99 2024. 5. 14. 14:14
728x90
반응형

문제

10명의 학생에 대해 학생별로 여섯개 과목 성적을 사용자로부터 입력받고 평균이 70아래면 '평균아래입니다'메세지 출력하기.
점수 입려값이 음수나 100보다 큰값을 입력하면 오류메세지 출력.

 

def check(lst):                            # 값이 음수이거나 100점이 넘는지 체크하는 함수
    rtn = True                             # 리턴 할 변수 선언
    for i in range(len(lst)):              # 리스트 요소수 만큼 반복
        if lst[i] < 0 or lst[i] > 100:     # 요소값이 음수 이거나 100 넘는지 확인
            rtn = False                    # 리턴값을 False로 함
            break                          # for 반복문 종료. 이미 False가 되므로
    return rtn                             # 결과를 리턴

def sum(lst):                              # 합계 함수
    rtn = 0
    for n in lst:                          # 요소수만큼 반복
        rtn += n                           # 요소수들을 더함
    return rtn                             # 합계 리턴


for i in range(10):                                                                # 6명 입력. 반복
    while True:                                                                   # 입력 점수가 음수이거나 100이 넘으면 다시 입력 받기 위한 반복. 무한 반복
        tmp = input(f"[{i+1}/6]성적을 입력 하세요(예:80,90,79,95,87,92) : ")       # 한 학생의 6개 점수를 모두 입력 받음
        tmp_lst = list(map(int, tmp.split(',')))                                  # ,로 각 점수 분리하고(split), map() 함수로 정수로 변환하고, 이 결과를 리스트로 만듬
        if check(tmp_lst) == False:                                               # 음수 및 100점 넘는지 확인
            print('점수 입려값이 음수나 100보다 큰값이 있습니다. 다시 입력하세요!')  
        else:                                                                     # 음수가 아니고 100이 넘지 않으면
            break                                                                 # while 반복문 빠져나감. 정상적인 점수들이므로

    d_sum = sum(tmp_lst)                            # sum() 함수로 함계 계산한 리턴 받음
    d_avg = d_sum / len(tmp_lst)                    # 평균 계산
    if d_avg < 70:                                  # 평균이 70보다 작으면
        print(f"{d_avg:4.1f} 평균아래입니다!")
    else:                                           # 평균이 70 이상이면
        print(f"평균은 {d_avg:4.1f}입니다!")

728x90
반응형