출처: 반크_세계유산 석굴암
문제]
성적을 입력하여 그에 대응하는 학점을 출력하는 프로그램을 작성하시오.
조건)
▶ 성적의 범위는 0<=N<=100으로 한다.
▶ 범위 밖 수가 입력되면 다시 입력한다.
▶ 음수가 입력되면 입력을 완료하고 학점을 출력한다.
▶ 학점은 상대평가를 기준으로 한다.
전체 인원의 상위 10%는 A+
전체 인원의 11%~20%는 A
전체 인원의 21%~30%는 B+
전체 인원의 31%~45%는 B
전체 인원의 46%~60%는 C+
전체 인원의 61%~75%는 C
전체 인원의 76%~85%는 D+
전체 인원의 86%~95%는 D
그외는 F로 한다.
입력 예시1)
1번째 성적을 입력하시오 : 715
0~100사이의 수가 아닙니다.
다시 입력하세요...
1번째 성적을 입력하시오 : 10
2번째 성적을 입력하시오 : 20
3번째 성적을 입력하시오 : 30
4번째 성적을 입력하시오 : 40
5번째 성적을 입력하시오 : 50
6번째 성적을 입력하시오 : 60
7번째 성적을 입력하시오 : 80
8번째 성적을 입력하시오 : 90
9번째 성적을 입력하시오 : 70
10번째 성적을 입력하시오 : 75
11번째 성적을 입력하시오 : 85
12번째 성적을 입력하시오 : 65
13번째 성적을 입력하시오 : -1
출력 예시1)
성적 학점
10 F
20 F
30 D
40 D+
50 C
60 C+
80 B+
90 A+
70 B
75 B
85 A
65 C+
참고풀이]
#입력자료 입력할 리스트를 선언한다.
#원본자료를 정렬할 리스트를 선언한다.
#학점을 입력할 리스트를 선언한다.
L=[]
L_Select=[]
L_Pass=[]
#선택정렬한다.(내림차순으로 정렬한다.)
def Select_Sort(L):
for n in L:
L_Select.append(n)
Start=0
while Start<len(L):
#리스트 중 제일 큰 수를 찾아 그 위치를 구한다.
Max=max(L_Select[Start:])
for i in range(Start,len(L)):
if Max==L_Select[i]:
MaxIndex=i
break
#리스트 Start에 리스트 위치의 값과 교환한다.
temp=L_Select[Start]
L_Select[Start]=L_Select[MaxIndex]
L_Select[MaxIndex]=temp
#Start를 하나 증가한다.
Start+=1
#학점을 부여한다.
def Pass_Chk(L_Select):
Ch=['A+','A','B+','B','C+','C','D+','D','F']
Start=-1
n10=int(round(len(L_Select)*10/100,0))
n15=int(round(len(L_Select)*15/100,0))
for i in range(9):
if i<1:
Start += 1
End =Start+n10
elif i<3 or 4<i<8:
Start = End
End+=n10
elif i<5:
Start = End
End += n15
else:
Start = End
End=len(L_Select)
for j in range(Start,End):
L_Pass.append(Ch[i])
#자료 입력
i=0
while True:
i+=1
N=int(input(str(i)+"번째 성적을 입력하시오 : "))
if N<0:
break
if 0<=N<=100:
L.append(N)
else:
print("0~100사이의 수가 아닙니다.")
print("다시 입력하세요...")
i-=1
#정렬한다.
Select_Sort(L)
#학점을 부여한다.
Pass_Chk(L_Select)
#결과 출력한다.
print("\n성적 학점")
for n in range(len(L)):
print(f'{L[n]:3} ',end="")
for i in range(len(L)):
if L[n]==L_Select[i]:
index=i
break
print(f' {L_Pass[index]}')
참고풀이 결과]
대한민국의 아름다운 영토, 독도의 봄
'프로그램 > Python 1000제' 카테고리의 다른 글
Python 71제] 파이썬 EXPRESS p192 도전문제 (0) | 2022.04.29 |
---|---|
Python 70제] 삽입정렬을 사용하여 오름차순 프로그램을 작성하시오. (0) | 2022.04.29 |
Python 68제] 성적을 선택정렬하여 출력하는 프로그램을 작성하시오. (0) | 2022.04.27 |
Python 67제] 1~100까지 수 중 소수 출력하는 프로그램을 작성하시오. (0) | 2022.04.26 |
Python 66제] 숫자 마름모 출력하는 프로그램을 작성하시오. (0) | 2022.04.25 |
댓글