본문 바로가기

STUDY/Python

[Python] 반복문

 

이 글은 24.01.04에 본인 벨로그에 작성했던 글을 옮겨 온 것이다.

 

반복문 제어(continue)

  • 1) 반복문 실행 중 continue를 만나면 실행 생략, 다음 반복문으로 넘어간다.
# 예시
for i in range(20):
    if i%3 !=0:
        continue    # if문의 조건을 만족하면 continue에 의해 아래 print문 실행하지 않고 통과.
    print(f"{i}은(는) 3의 배수다")
==================================
0은(는) 3의 배수다
3은(는) 3의 배수다
6은(는) 3의 배수다
9은(는) 3의 배수다
12은(는) 3의 배수다
15은(는) 3의 배수다
18은(는) 3의 배수다
  • 2) else문은 반복문 실행이 모두 끝난 후 실행된다.
count=0

for i in range(20):
    if i%3 !=0:
        continue    # if문의 조건을 만족하면 continue에 의해 아래 print문 실행하지 않고 통과.
    print(f"{i}은(는) 3의 배수다")
    count+=1
    
else:
    print(f"20까지의 정수 중 3의 배수는 {count}개다")
==================================================
0은(는) 3의 배수다
3은(는) 3의 배수다
6은(는) 3의 배수다
9은(는) 3의 배수다
12은(는) 3의 배수다
15은(는) 3의 배수다
18은(는) 3의 배수다
20까지의 정수 중 3의 배수는 7개다
  • 최소공배수를 구해보자.
count=0
min_num = 0

for i in range(1, 101):
    if i%3 !=0 or i%7 !=0:
        continue
    print(f"{i}은(는) 3과 7의 공배수다")
    count+=1
    
    if min_num == 0:
        min_num = i		
    # min_num이 0일 때, 처음 공배수(=최소공배수)가 min_num에 할당되고,
    # 그렇게 할당 된 이후엔 min_num은 더 이상 0이 아니므로 min_num에 최소공배수만이 입력됨.

else:
    print(f"100까지의 정수 중 3과 7의 공배수는 {count}개다")
    print(f"100까지의 정수 중 3과 7의 최소공배수는 {min_num}이다")

 

파이썬 기초 문제풀이

[연습문제]

  • 데이터와 변수(05)
    내 나이가 100살이 되는 해의 연도를 구해보자

 

방법 (1)

# input

age = input('나이 : ')
year = 2024
count = 0

if age.isdigit():
    print(f"현재 나이는 {age}살")
    age=int(age)
    while age < 100:
        age+=1
        year += 1
        count += 1
    print(f"{year}년({count}년 후) 나이는 {age}살")
else:
    print('잘못 입력하셨습니다')
==================================================
# output

나이 : 29
현재 나이는 29살
2095년(71년 후) 나이는 100살

 

방법 (2)

# input(if문만 써서 더 간단하다)

import datetime
today = datetime.datetime.today()
age = input('나이 : ')

if age.isdigit():
    after_age = 100 - int(age)
    to_the_100 = today.year + after_age
    print(f"{to_the_100}년({after_age}년 후)에 100살")
else:
    print('잘못 입력했습니다')
=====================================================
# output

나이 : 29
2095년(71년 후)에 100살

 

 

  • 연산자(01)
    물건 가격과 지불 금액을 입력하면 거스름돈을 출력하는 코드를 짜 보자.
# input

price = int(input('가격 : '))
money = int(input('지불 금액 : '))
change = money-price

cnt50000 = 0
cnt10000 = 0
cnt5000 = 0
cnt1000 = 0
cnt500 = 0
cnt100 = 0
cnt10 = 0

if change > 0:
    change = (change//10)*10    # 1원 단위는 없애기 위해.
    print(f"거스름 돈 : {change}(원 단위 절사)")
    if change >= 50000:
        cnt50000 = change // 50000
        change = change % 50000
    if change >= 10000:
        cnt10000 = change // 10000
        change = change % 10000
    if change >= 5000:
        cnt5000 = change // 5000
        change = change % 5000
    if change >= 1000:
        cnt1000 = change // 1000
        change = change % 1000
    if change >= 500:
        cnt500 = change // 500
        change = change % 500
    if change >= 100:
        cnt100 = change // 100
        change = change % 100
    if change >= 10:
        cnt10 = change // 10
    print('=' * 50)
    print(f"50,000 {cnt50000}장")
    print(f"10,000 {cnt10000}장")
    print(f"5,000 {cnt5000}장")
    print(f"1,000 {cnt1000}장")
    print(f"500 {cnt500}개")
    print(f"100 {cnt100}개")
    print(f"10 {cnt10}개")
    print('=' * 50)
    
else:
    print('돈 더 내세요')
----------------------------------------------------
# output

(1)
가격 : 100000
지불 금액 : 2500
돈 더 내세요

(2)
가격 : 12345
지불 금액 : 654321
거스름 돈 : 641970(원 단위 절사)
==================================================
50,000 12장
10,000 4장
5,000 0장
1,000 1장
500 1개
100 4개
10 7개
==================================================

 

  • 연산자(02)
    국/영/수 점수 입력 후 총점, 평균, 최고점수 과목, 최저점수 과목, 최고점수와 최저점수 차이 출력

 

방법 (1)

# input

kor = int(input('국어 : '))
eng = int(input('영어 : '))
mat = int(input('수학 : '))
total = kor+eng+mat
top_name = ''
top_score = 0
bot_name = ''
bot_score = 0

print(f"총점 : {total}")
print(f"평균 : {total/3:.2f}")

if kor > eng and kor > mat:
    top_name = '국어'
    top_score = kor
    if eng > mat:
        bot_name = '수학'
        bot_score = mat
    else:
        bot_name = '영어'
        bot_score = eng

if eng > kor and eng > mat:
    top_name = '영어'
    top_score = eng
    if kor > mat:
        bot_name = '수학'
        bot_score = mat
    else:
        bot_name = '국어'
        bot_score = kor

if mat > eng and mat > kor:
    top_name = '수학'
    top_score = mat
    if eng > kor:
        bot_name = '국어'
        bot_score = kor
    else:
        bot_name = '영어'
        bot_score = eng

print('-'*50)
print(f"최고 점수 과목(점수) : {top_name}({top_score})")
print(f"최저 점수 과목(점수) : {bot_name}({bot_score})")
print(f"최고, 최저 점수 차이 : {top_score - bot_score}")
print('-'*50)
======================================================
# output

수학 : 90
총점 : 242
평균 : 80.67
--------------------------------------------------
최고 점수 과목(점수) : 수학(90)
최저 점수 과목(점수) : 국어(67)
최고, 최저 점수 차이 : 23
--------------------------------------------------

 

방법 (2)

# 최고/최저 점수 과목을 미리 정해놓고 시작하는 방법이다.
# input

kor = int(input('국어 : '))
eng = int(input('영어 : '))
mat = int(input('수학 : '))
total = kor+eng+mat

print(f"총점 : {total}")
print(f"평균 : {total/3:.2f}")

top_name = '국어'
top_score = kor

if eng > top_score:
    top_score = eng
    top_name = '영어'

if mat > top_score:
    top_score = mat
    top_name = '수학'

bot_name = '국어'
bot_score = kor

if eng < bot_score:
    bot_score = eng
    bot_name = '영어'

if mat < bot_score:
    bot_score = mat
    bot_name = '수학'

print('-'*50)
print(f"최고 점수 과목(점수) : {top_name}({top_score})")
print(f"최저 점수 과목(점수) : {bot_name}({bot_score})")
print(f"최고, 최저 점수 차이 : {top_score - bot_score}")
print('-'*50)
======================================================
# output

수학 : 90
총점 : 242
평균 : 80.67
--------------------------------------------------
최고 점수 과목(점수) : 수학(90)
최저 점수 과목(점수) : 국어(67)
최고, 최저 점수 차이 : 23
--------------------------------------------------