반복문 --> 단위의 Loof
단위 --> 코드블럭
반복의 통제방법 --> 조건.
반복문 종류 : for, while
- for문
1. 전통적인 for문 (java, c)
2. 향상된 for문 (java, python)
- while문
1. while문
2. do ~ while문
for문 --> 반복의 횟수를 개발자가 예측 가능한경우
while문 --> 반복의 횟수를 개발자가 예측하기 어려운경우
for문의 경우 사전에 정의된 횟수만큼 동작 후 종료
while문의 경우 제시된 조건을 만족할 경우 동작. 탈출조건 만족시 종료
전통적인 for문 --> 통제 방식에서 패턴이 있는 수열(등차수열, 등비수열)을 이용.
range() : 파이썬에서 수열을 생성해주는 함수
# range()의 매개변수 : (시작값, 종료값, 증감값)
a = range(0,5,1)
print(a) # range(0, 5) : 출력값은 대상 자체를 출력
print(list(a)) #[0, 1, 2, 3, 4]
# range(0, 5)
# [0, 1, 2, 3, 4]
# 1 번째
# 2 번째
# 3 번째
# 4 번째
# 5 번째
# 전통적인 for문
cnt = 0 # 카운터 변수. 반복 횟수를 측정
total = 0 # 총합
for i in range(5):
print("안녕하세요") #요소의 개수를 이용
print("%d번 뵙네요"%(i+1)) #요소의 개수 및 변수를 이용
cnt += 1 # 실행시마다 cnt가 1씩 증가
total += i
print("반복횟수 : %d"%cnt)
print("총합 : %d"%total)
# 안녕하세요
# 1번 뵙네요
# 안녕하세요
# 2번 뵙네요
# 안녕하세요
# 3번 뵙네요
# 안녕하세요
# 4번 뵙네요
# 안녕하세요
# 5번 뵙네요
# 반복횟수 : 5
# 총합 : 10
아래의 코드를 반복문을 사용한 코드로 수정하여보자
제시 코드 :
st_1 = input("첫번째 학생의 이름을 작성하세요")
st_2 = input("두번째 학생의 이름을 작성하세요")
st_3 = input("세번째 학생의 이름을 작성하세요")
rank_1 = ""
rank_2 = ""
rank_3 = ""
st_1_arr = []
st_2_arr = []
st_3_arr = []
st_1_sum = 0
st_1_avg = 0
st_1_div = 0
st_1_cul = 0
st_2_sum = 0
st_2_avg = 0
st_2_div = 0
st_2_cul = 0
st_3_sum = 0
st_3_avg = 0
st_3_div = 0
st_3_cul = 0
# 점수 불러오기 및 list 요소 int 캐스팅
score_st_1 = open("../../student_1.txt","r" , encoding = "UTF-8")
st_1_arr = score_st_1.read().split(" ")
score_st_1.close()
st_1_arr[0] = int(st_1_arr[0])
st_1_arr[1] = int(st_1_arr[1])
st_1_arr[2] = int(st_1_arr[2])
score_st_2 = open("../../student_2.txt","r" , encoding = "UTF-8")
st_2_arr = score_st_2.read().split(" ")
score_st_2.close()
st_2_arr[0] = int(st_2_arr[0])
st_2_arr[1] = int(st_2_arr[1])
st_2_arr[2] = int(st_2_arr[2])
score_st_3 = open("../../student_3.txt","r" , encoding = "UTF-8")
st_3_arr = score_st_3.read().split(" ")
score_st_3.close()
st_3_arr[0] = int(st_3_arr[0])
st_3_arr[1] = int(st_3_arr[1])
st_3_arr[2] = int(st_3_arr[2])
# 총점 및 평균 구하기
st_1_sum = sum(st_1_arr)
st_1_avg = st_1_sum/len(st_1_arr)
st_2_sum = sum(st_2_arr)
st_2_avg = st_2_sum/len(st_2_arr)
st_3_sum = sum(st_3_arr)
st_3_avg = st_3_sum/len(st_3_arr)
# 학점계산기
st_1_div = int(st_1_avg/10)
st_1_cul = int(abs(10 - st_1_div) + 64)
if st_1_avg == 100:
rank1 = "A"
elif (st_1_avg >= 60):
rank_1 = chr(st_1_cul)
else:
rank_1 = "F"
if st_1_avg % 10 >= 5 and rank_1 != "F":
rank_1 = rank_1 + "+"
st_2_div = int(st_2_avg/10)
st_2_cul = int(abs(10 - st_2_div) + 64)
if st_2_avg == 100:
rank_2 = "A"
elif (st_2_avg >= 60):
rank_2 = chr(st_2_cul)
else:
rank_2 = "F"
if st_2_avg % 10 >= 5 and rank_2 != "F":
rank_2 = rank_2 + "+"
st_3_div = int(st_3_avg/10)
st_3_cul = int(abs(10 - st_3_div) + 64)
if st_3_avg == 100:
rank_3 = "A"
elif (st_3_avg >= 60):
rank_3 = chr(st_3_cul)
else:
rank_3 = "F"
if st_3_avg % 10 >= 5 and rank_3 != "F":
rank_3 = rank_3 + "+"
print("%s \t%s \t%s \t%s \t%s \t%s \t%s"%("이름","국어", "수학", "영어", "총점", "평균", "학점환산"))
print("%s \t%d \t%d \t%d \t%d \t%d \t%s"%(st_1, st_1_arr[0], st_1_arr[1], st_1_arr[2], st_1_sum, st_1_avg, rank_1))
print("%s \t%d \t%d \t%d \t%d \t%d \t%s"%(st_2, st_2_arr[0], st_2_arr[1], st_2_arr[2], st_2_sum, st_2_avg, rank_2))
print("%s \t%d \t%d \t%d \t%d \t%d \t%s"%(st_3, st_3_arr[0], st_3_arr[1], st_3_arr[2], st_3_sum, st_3_avg, rank_3))
첫번째 학생의 이름을 작성하세요 a
두번째 학생의 이름을 작성하세요 b
세번째 학생의 이름을 작성하세요 c
이름 국어 수학 영어 총점 평균 학점환산
a 90 80 66 236 78 C+
b 94 77 99 270 90 A
c 45 27 11 83 27 F
수정 코드
st = []
rank = []
score_st = []
st_arr = []
st_div = []
st_cul = []
st_avg = []
st_sum = []
#학생이름 입력
for i in range(3):
st.append(input("%d번째 학생의 이름을 작성하세요"%(i+1)))
#점수 불러오기 및 list요소 int 캐스팅
score_st.append(open("../../student_" + str(i+1) + ".txt","r" , encoding = "UTF-8"))
st_arr.append(score_st[i].read().split(" "))
score_st[i].close()
for j in range(3):
st_arr[i][j] = (int(st_arr[i][j]))
#점수 합, 평균 계산
st_sum.append(sum(st_arr[i]))
st_avg.append(st_sum[i]/len(st_arr[i]))
#학점 계산기
st_div.append(int(st_avg[i]/10))
st_cul.append(int((10 - st_div[i])+64))
if st_avg[i] == 100:
rank.append("A")
elif (st_avg[i] >= 60):
rank.append(chr(st_cul[i]))
else:
rank.append("F")
if st_avg[i] % 10 >= 5 and rank[i] != "F":
rank[i] = rank[i] + "+"
print("%s \t%s \t%s \t%s \t%s \t%s \t%s"%("이름","국어", "수학", "영어", "총점", "평균", "학점환산"))
for k in range(3):
print("%s \t%d \t%d \t%d \t%d \t%d \t%s"%(st[k], st_arr[k][0], st_arr[k][1], st_arr[k][2], st_sum[k], st_avg[k], rank[k]))
'프로그래밍 및 코딩 > Python' 카테고리의 다른 글
for문 예시(1) (0) | 2024.08.05 |
---|---|
파일 입력 예시 (0) | 2024.08.05 |
파일 입출력 (0) | 2024.08.02 |
if문 예제(3) (0) | 2024.07.29 |
if문 예제(2) (0) | 2024.07.24 |