Notice
Recent Posts
Recent Comments
Link
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Tags
more
Archives
Today
Total
관리 메뉴

archive

Practice 01 – 학점 계산기 본문

Python/23_1 오픈소스와 파이썬 프로그래밍

Practice 01 – 학점 계산기

안정민 2023. 4. 1. 01:22

Problem Set)

아래 조건에 부합하는 Python 프로그램을 작성하고 Git 리모트 저장소에 학점 계산기 프로젝트를 저장한 후 코드와 실행 결과, git 원격 저장소 증빙을 첨부하여 제출합니다. Git 원격 저장소 증빙은 원격 저장소(Github, Git 관련 GUI 등)에서 push된 파일들의 목록을 캡처하는 것 만으로 충분합니다.

 

1. 사용자는 각각의 수강과목에 대한 학점, 평점을 입력합니다.

2. 프로그램은 입력받은 정보로부터 총 학점과 학점평균(GPA)를 제출용과 열람용으로 출력합니다.

3. 제출용 학점에는 F학점이 포함되지 않으나 열람용 학점에는 F학점이 포함됩니다.

4. 학점은 A+, A, B+, B, C+, C, D+, D, F로 구분되며 각각 4.5, 4.0, 3.5, 3.0, 2.5, 2.0, 1.5, 1.0, 0.0로 환산됩니다.

 

def convert(grade):
    match grade:
        case 'F':
            convertval=0
        case 'A+':
            convertval=4.5
        case 'A':
            convertval=4.0
        case 'B+':
            convertval=3.5
        case 'B':
            convertval=3.0
        case 'C+':
            convertval = 2.5
        case 'C':
            convertval = 2.0
        case 'D+':
            convertval = 1.5
        case 'D':
            convertval = 1.0

    return convertval

print('작업을 선택하세요, 학점계산기를 종료하려면 -1을 입력합니다.')

timeForView =0
timeForSubmit =0
gradeSum =0

while True:
    print('1. 입력')
    print('2. 계산')
    x = input("-->")

    if x == '1':
        print("입력을 종료하려면 -1 입력.")
        while True:
            time = input("학점을 입력하세요: ")
            if time == "-1":
                break
            else:
                time = float(time)
                grade = input("평점을 입력하세요: ")
                convertval = convert(grade)
                if (grade == 'F'):
                    timeForView += time
                    gradeSum += convertval * time

                else:
                    timeForView += time
                    timeForSubmit += time
                    gradeSum += convertval * time

                print("입력되었습니다.")
    else:
        print("제출용: " + str(timeForSubmit) + "학점 (GPA: " + str(round(gradeSum / timeForSubmit, 3)) + ")")
        print("열람용: " + str(timeForView) + "학점 (GPA: " + str(round(gradeSum / timeForView, 3)) + ")")
        print("프로그램을 종료합니다.")
        break

<실행결과>

 

++ 그래도 이제 조금은 코드를 짜는데 급급하지 않다고 느낀 점이 

이번에 코드 짜면서 최소한으로 코드 겹치는 부분 만들려고 하고 수정하고

최종적으로 코드도 20줄 정도 줄인게 진짜 대견하고 

내가 요구사항엔 없었지만 프로그램다운 프로그램이 되기 위해 필수적인 부분도 알아서 구현했다

이성훈 교수님이 수업시간에

프로그래머의 배경화면이 너저분해도 코드는 너저분해서는 안 된다

코드를 짠다는 것은 예술이다

이 두 말이 계속 뇌에서 메아리 치는 중...

나도 언젠간 컴퓨터 예술인이 될 수 있으려나! (ง •̀_•́)ง

근데 진짜 자바나 C 같이 일일히 자료형 지정해야되고 코더가 해야될 일이 엄청 많은 언어를 하다가

파이썬 하니까 어딘가 모르게 찜찜하고... 그래

한 학기에 언어 세 개는 진짜 헷갈리는군

하지만 재밌다