━━━━ ◇ ━━━━
파이썬/코드잇

Python 29. while문, if문 실습 (1) with 코드잇

728x90
반응형

해당 포스팅은 코드잇 복습을 위한 포스팅입니다.
문제 발생 시 즉시 비공개 처리 하겠습니다.

실습 1

학생들에게 최종 성적을 알려 주는 '학점 계산기'를 만들려고 한다. 

이 수업에는 50점 만점의 중간고사와 50점 만점의 기말고사가 있다.  두 시험의 점수를 합해서 최종 성적을 내는 방식이다. 

 

A: 90점 이상

B: 80점 이상 90점 미만

C: 70점 이상 80점 미만

D: 60점 이상 70점 미만

F: 60점 미만

 

print_grade 함수는 파라미터로 중간고사 점수 midterm_score와 기말고사 점수 final_score를 받고, 최종 성적을 출력한다. 

 

실행결과

 

 

내 코드

def print_grade(midterm_score, final_score):
    total = midterm_score + final_score
    
    if total >= 90:
        print("A")
    elif 90 > total >= 80:
        print("B")
    elif 80 > total >= 70:
        print("C")
    elif 70 > total >= 60:
        print("D")
    else:
        print("F")


print_grade(40, 45)
print_grade(20, 35)
print_grade(30, 32)
print_grade(50, 45)

#실행결과
B
F
D
A

모범답안

elif문으로 넘어왔다는 것은 앞선 if문의 조건 부분을 통과하지 않았다는 뜻이다. 즉 점수가 90점 미만일 수 밖에 없기 때문에 total >= 80으로 바로 적을 수 있는 것.

 

 


실습 2

while문과 if문을 활용하여, 100 이하의 자연수 중 8의 배수이지만 12의 배수는 아닌 것을 모두 출력하자. 

예를 들어서 16은 8의 배수이지만 12의 배수가 아니기 때문에 조건에 부합니다. 하지만 48은 8의 배수이면서 12의 배수이기도 해서 조건에 부합하지 않는다. 

 

실행결과

 

내 코드

i = 1
while i <= 100:
    if i % 8 == 0 and i % 12 != 0:
        print(i)
    i += 1
    

#실행결과
8
16
32
40
56
64
80
88

모범답안

i += 1if문 밖에 있어야된다고 한다. 그렇지 않으면 무한루프에 빠질 가능성이 있다는데 일단 나는 안에 넣었지만 큰 문제는 없었다. 그래도 항상 밖에 쓰는 습관을 길러야겠다.

 

 


실습 3

10보다 작은 2 또는 3의 배수는 2, 3, 4, 6, 8, 9이며, 이들의 합은 32이다. 

while문과 if문을 활용하여, 1,000보다 작은 자연수 중 2 또는 3의 배수의 합을 출력하는 프로그램을 써보자.

 

실행결과

 

내 코드

i = 1
total = 0
while i < 1000:
    if i % 2 == 0 or i % 3 == 0:
        total += i
    i += 1

print(total)

#실행결과
333167

모범답안

먼저 누적된 합을 보관할 수 있는 변수가 필요하다. total을 생성해준다. 

while 반복문의 조건인 i < 1000에서 i += 1 을 돌린다. 

if문에서 2의 배수, 3의 배수 조건을 충족할 때 마다 total에 i를 더해주고 반복문이 끝나면 총 누적된 합 total을 출력한다. 

 

 

 


실습 4

정수 n의 약수는 n을 나누었을 때 나누어 떨어지는 수다. 만약 정수 i가 정수 n의 약수라면, n을 i로 나누었을 때 나머지가 0이 나와야 한다.

 

정수 120의 약수를 모두 출력하고, 총 몇개의 약수가 있는지 출력하는 프로그램을 써보자. 

 

실행결과

 

내 코드

i = 1
count = 0
while i <= 120:
    if 120 % i == 0:
        count += 1
        print(i)

    i += 1
print("120의 약수는 총 {}개입니다.".format(count))

#실행결과
1
2
3
4
5
6
8
10
12
15
20
24
30
40
60
120
120의 약수는 총 16개입니다.

모범답안

count값을 저장할 변수를 만들어주고 count를 1씩 올려주는 게 포인트다. 

내 코드와 다른점은 120을 상수 N으로 만들어준 것,

그리고 print와 count의 코드상 위치이다. 

 

 


728x90
반응형
COMMENT