728x90
반응형
f = open('students.txt', 'w') # 파일 열기. 쓰기로 열기
cnt = 0 # while문을 사용하기 때문에 while 반복이 5번 하도록 Count 함
while cnt < 5: # while문. cnt가 5보다 작으면 반복. cnt가 0부터 시작하니 <5 가 됨.
s_name = input('이름 입력 : ') # 이름 입력 받음
v1 = int(input('중간고사 점수 : ')) # 점수 입력 받음. 점수 문자열을 입력받고 정수 변환. 꼭 정수변환이 필요하지 않음
v2 = int(input('기말고사 점수 : ')) # 입력 받은 점수를 파일에 쓸 거라서 정수변환을 꼭 할 필요는 없음
f.write(s_name + ', ' + str(v1) + ', ' + str(v2) + '\n') # 파일에 쓰기.
cnt += 1 # cnt 1씩 증가. 빼먹으면 무한 반복 됨
f.close() # 파일 닫기
f = open('students.txt', 'r') # 파일 열기. 읽기로 열기
lines = f.readlines() # 라인데이터 읽기
f.close() # 파일 닫기
print(" 이름 중간 기말 총점 평균 학점") # 첫줄 제목 출력
for li in lines: # 라인 데이터 수 만큼 반복. whlie문 사용하지 않기
li = li.strip() # 라인 끝에 줄바꿈('\n') 문자 제거
tmp = li.split(',') # ',' 문자로 분리. 이름,중간점수,기말점수 분리
tot = int(tmp[1]) + int(tmp[2]) # 합계 계산. 점수는 문자열이라서 정수로 변환 후 계산
avg = tot/2 # 평균 계산. 점수가 2개 이므로 합계를 2로 나눔
credit = '' # 학점 변수
if avg >= 90: # 평균에 따른 학점 부여
credit = 'A'
elif avg < 90 and avg >= 80:
credit = 'B'
elif avg < 80 and avg >= 70:
credit = 'C'
elif avg < 70 and avg >= 60:
credit = 'D'
elif avg < 60:
credit = 'F'
print(f"{tmp[0]} {tmp[1]:>5} {tmp[2]:>4} {tot} {avg:>5} {credit}") # 출력. ':>5'하면 5자리 채우고 오른쪽 정렬 뜻
728x90
반응형
'프로그램' 카테고리의 다른 글
[파이썬] 문제 : 문자열 중간 반복문자의 조작 (0) | 2022.12.11 |
---|---|
[파이썬] 문제 : 튜링상 수상자 리스트,딕셔너리,집합 코드 해석 (0) | 2022.12.11 |
[파이썬] 문제 : 7글자 입력받아 회문 검사 (0) | 2022.12.11 |
[파이썬] 문제 : 시분초 입력받고, 몇 초 뒤의 시분초 출력(timedelta) (0) | 2022.12.11 |
[파이썬] 문제 : 폐기물 csv파일로 막대그래프(bar) 그리기(pandas, groupby) (0) | 2022.12.10 |
댓글