본문 바로가기
프로그램

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

by 오디세이99 2024. 5. 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
반응형

댓글