본문 바로가기
Python

파이썬 반복문(Python Loop)

by wanttosleep1111 2023. 1. 7.

파이썬 반복문(Python Loop)

 

1. 반복문 (while문, for문)

 

while문 : 반복 횟수가 명확하지 않을 때

while - break : 반복문을 강제 종료하는 키워드

while - continue : 문장을 실행하다 continue를 만나면 while의 첫 번째 조건식으로 되돌아가는 키워드

 

▶ 예제 : 두 개의 정수를 입력 받아 더하는 코드를 작성해보기

num1 = 1
num2 = 1

while num1 != 0 or num2 != 0 :
    num1 = int(input('첫 번째 정수 입력 >> '))
    num2 = int(input('두 번째 정수 입력 >> '))
    if num1 == 0 and num2 == 0 :
        print('프로그램이 종료되었습니다.')
    else :
        print('두 정수의 합 : ', num1+num2)

 

▶ 예제 : 다이어트 관리 프로그램

현재 몸무게와 목표 몸무게를 입력 받고 주차 별 감량한 몸무게를 반복해서 입력 받은 후, 목표 몸무게를 달성하면 축하한다는 실행문장 출력과 프로그램을 종료하기

now = int(input('현재 몸무게 : '))
goal = int(input('목표 몸무게 : '))
week = 0 # 주차 카운트

while now > goal :
    week += 1
    now -= int(input(f'{week}주차 감량 몸무게 : '))
    
print(f'{now}kg 달성! 축하합니다!!')

 

▶ 예제 : 랜덤으로부터 1부터 50사이의 숫자를 뽑고 뽑은 숫자를 맞추는 up&down 게임 만들기

※ Tip : random 기능 호출해서 랜덤 정수 뽑기

import random
random.randint(최소값, 최대값)

import random # 랜덤 기능 호출
rd = random.randint(1,50) # 1~50 사이의 숫자에서 랜덤 숫자 1개 뽑기

while True :
    num = int(input('숫자를 입력하세요 >> '))
    if rd == num :
        print('정답을 맞추셨습니다.')
        break
    else :
        print(f'{num}보다 큰 수 입니다') if rd>num else print(f'{num}보다 작은 수 입니다')

  


 

② for문 : 반복 횟수가 명확할 때

drink = ['환타', '아메리카노', '식혜', '레모네이드', '콜라']

for i in drink :
    print(f'음료수 : {i}')

 

③ for ~ range()

range() 함수 : 필요한 만큼 숫자를 만들어내는 유용한 기능

range(시작할 숫자, 종료할 숫자, 증가량)

※ 시작할 숫자 기본값 0, 증가량 기본값 1

※ 종료할 숫자를 포함하고자 할 때 : 종료할 숫자+1

# len()함수를 이용한 for~range

drink = ['환타', '아메리카노', '식혜', '레모네이드', '콜라']

for i in range(len(drink)) :
    print(i, drink[i])

 

④ for문에서 변수 2개를 이용해서 이중 리스트나 튜플 데이터 값 가져오기

lst1 = [[1,2],[3,4],[5,6]]

for i,j in lst1:
    print(i,j)

 

▶ 예제

for문을 이용하여 97~77까지 가로로 출력하기

for문을 이용하여 23~39까지 가로로 출력하기

※ print() 함수에서 속성값 end를 바꿔보기

print(출력값, end="")

# 97~77까지 출력

for i in range(97,76,-1) :
    print(i, end=" ")

print()

# 23~39까지 출력

for i in range(23,40,1) :
    print(i, end=" ")

 


 

▶ 실습

5명의 정보처리기사 자격증 시험 점수가 리스트에 담겨 있습니다. 60점 이상 점수를 받았으면 합격일 때, 각 점수가 합격 점수인지 불합격 점수인지 판별하여 출력 (단, for~range(len()) 사용)

score_list = [90, 45, 70, 60, 55]

 

더보기
score_list = [90, 45, 70, 60, 55]

for i in range(len(score_list)) :
    if score_list[i] >= 60 :
        print(f'{i+1}번 학생은 합격입니다.')
    else :
        print(f'{i+1}번 학생은 불합격입니다.')

 

▶ 실습

for 문을 이용하여 다음 리스트에 들어가 있는 요소 중 가장 큰 수와 작은 수를 찾아 출력하기

list1 = [4, 5, 2, 1, 99, 15, 2, 7, 27]

 

더보기
list1 = [4, 5, 2, 1, 99, 15, 2, 7, 27]

max = 0
min = 1000

# list1에서 가장 큰 수 출력하기
for i in list1 :
    if i >= max :
        max = i
print(max)

# list1에서 가장 작은 수 출력하기
for i in list1 :
    if i <= min :
        min = i
print(min)

 


 

▶ 예제 (Pickle 모듈 이용)

melon_100.pkl 파일을 불러와 데이터를 확인하고 수정, 새로 저장해보기

 

※ Pickle 모듈

파이썬에서 기본 제공하는 모듈 : import pickle

파이썬 객체 형태를 유지하면서 파일을 저장하고 불러올 때 이용

바이너리 형태로 저장

버전 이슈로 장기간 보관이 필요한 데이터는 적합하지 않음

 

# pickle 모듈을 실행하고 music_100.pkl을 변수 music에 불러오기

import pickle

with open('music_100.pkl', 'rb') as f:
    music = pickle.load(f)
    
music

 

# 63위~ 70위까지 차트 출력하기
music[62:70]

 

# 노래 제목을 특정 키워드로 검색해서 검색된 노래 곡 수와 차트 순위, 제목 출력하기

s_music = input('제목 중 찾고 싶은 키워드 입력 >> ')
s_music_list = [] # 검색된 노래 제목이 있는 값을 담기
cnt = 0 # 검색된 노래 곡 수 카운트

for i in music :
    if s_music in i[1] :
        cnt += 1
        s_music_list.append([i[0], i[1]])

print(f'\'{s_music}\'으로 검색한 노래 수 : {cnt}')
print(f'순위와 노래 제목 : {s_music_list}')

 

# 특정 가수의 노래 리스트 만들기

singer = input('가수명을 입력하세요 >> ')
song_list = [] # 노래 제목을 담을 리스트 선언

for i in music :
    if singer in i[2] :
        song_list.append(i[1])
print(song_list)

 

# 차트 1위 곡을 삭제하고 최애곡으로 바꿔보기

del music[0] # music 0번 인덱스의 1위 곡 삭제
music.insert(0, [1, '김동률', '기억의습작'])

print(music[0:5])

 

# 가수 이름 '임영웅'을 찾아 '임HERO'로 바꿔보고 곡 수, 순위 차트 출력하기 

cnt = 0 # 임영웅 곡 수 카운트
im_music = [] # 임영웅 순위 차트를 담을 리스트 선언

for i in music :
    if i[2] == '임영웅' :
        i[2] = '임HERO'
        cnt += 1
        im_music.append(i)
        
print(f'melon 차트 속 임영웅 곡 : {cnt}')
print(im_music)

 

# 바뀐 melon차트를 새로운 파일 mymelon100.pkl로 저장해보기

with open('mymelon100.pkl', 'wb') as f:
    pickle.dump(music, f)

 

댓글