## while문의 가장 기초적인 예시
idx = 1 # 처음 idx를 1에서 시작
while idx <= 10 : # idx가 10이 될 때까지
print(idx) # idx 값을 출력
idx += 1 # idx값을 하나씩 증가시키면서 할당..
# 위와 같이 하면 1,2,... 10까지 출력됨
그러면 1~100 까지의 자연수 중에서, 2의 배수와 3의 배수가 아닌 숫자만 출력하는 반복문을 만들어 보자.
# break문으로 만들게 된다면?
a = 1 # 일단 a=1 부터 시작
while a <= 100 # 100까지 체크
a += 1 # a에 1보다 더 큰 값 할당하고
if (a % 2 == 0) or (a % 3 == 0): # 2나 3의 배수라면
break # break! while문 깨고 나오기
print(a)
# continue 문으로 만든다면?
a = 1
while a <= 100:
if (a % 2 == 0) or (a % 3 == 0):
a += 1 # 조건을 만족하면 a를 증가시킨 후,
continue # 다음 루프로 넘어감 (출력 생략)
print(a)
a += 1 # 조건을 만족하지 않으면 출력
# 주의! 이걸 빼먹으면 무한 루프 발생
# for문의 구조 (pseudo-code, 작동하는 코드X)
for 변수 in collection :
수행할 문장
# 지난 포스팅에서 if-elif-else 통해 A+부터 F까지 학점 부여한 코드
raw_score = 85
if raw_score >= 97:
print(f'원점수는 {raw_score}이고, 학점은 A+ 입니다.')
elif raw_score >= 94:
print(f'원점수는 {raw_score}이고, 학점은 A0 입니다.')
elif raw_score >= 90:
print(f'원점수는 {raw_score}이고, 학점은 A- 입니다.')
elif raw_score >= 87:
print(f'원점수는 {raw_score}이고, 학점은 B+ 입니다.')
elif raw_score >= 84:
print(f'원점수는 {raw_score}이고, 학점은 B0 입니다.')
elif raw_score >= 80:
print(f'원점수는 {raw_score}이고, 학점은 B- 입니다.')
elif raw_score >= 77:
print(f'원점수는 {raw_score}이고, 학점은 C+ 입니다.')
elif raw_score >= 74:
print(f'원점수는 {raw_score}이고, 학점은 C0 입니다.')
elif raw_score >= 70:
print(f'원점수는 {raw_score}이고, 학점은 C- 입니다.')
elif raw_score >= 60:
print(f'원점수는 {raw_score}이고, 학점은 D+ 입니다.')
else:
print(f'원점수는 {raw_score}이고, 학점은 F 입니다.')
raw_score = 85
grades = {
97: 'A+',
94: 'A0',
90: 'A-',
87: 'B+',
84: 'B0',
80: 'B-',
77: 'C+',
74: 'C0',
70: 'C-',
60: 'D+'
}
# dict.items()는 정렬된 순서가 보장되지 않음
# sorted(grades.items())만 쓰면 → 점수 낮은 것부터 오름차순 정렬
# reverse = True 옵션 통해,
for cutoff, grade in sorted(grades.items(), reverse=True):
if raw_score >= cutoff:
print(f'원점수는 {raw_score}이고, 학점은 {grade}입니다.)
break
else:
print(f'원점수는 {raw_score}이고, 학점은 F 입니다.')
그런데 여러 사람의 점수를 입력받아서, 학점을 출력하려면 어떻게 해야할까? 다음 게시글에서 다룰 '함수'를 통해 다뤄보겠음.
for문에서는 range() 함수도 같이 활용이 됨