[python] 반복분 while 과 for

반복문
반복적인 작업을 가능하게 해주는 도구
while - 특정 조건을 만족하는 경우 수행, 반복을 멈추게 하는 장치가 필요
for - 리스트, 문자열, 튜플 등 컬렉션 타입의 아이템을 하나씩 순회하면서 사용 가능

while

while 조건문:
    코드 블록

while 뒤의 조건이 True일 경우, while 코드 블록을 계속 수행
조건이 False가 되면 블록 수행을 멈추고 이후 코드를 실행

a = [1, 10, 9, 24]

i = 0  # 인덱스
while i < len(a):
    print('value: ', a[i], ', index: ', i)
    i += 1

조건문과 함께 사용하기

a = [1, 10, 9, 24, 25, 26]

i = 0  # 인덱스
while i < len(a):
    if a[i] > 20:
        print(a[i])
    i += 1

a = [1, 10, 9, 24, 25, 26]

i = 0  # 인덱스
while i < len(a):
    if a[i] % 2:  # 홀수인 경우만 출력하기
        print(a[i])
    else:
        print(a[i]/2)
    i += 1

무한루프

while의 경우 종료가 되지 않도록 코드를 작성하면 블록에서 빠져나올 수 없다

while True:
    print('while')

break

loop를 중단할 때 사용
보통 조건문 안에서 수행되며, 조건을 만족하는 경우 loop를 탈출하기 위해 사용
loop를 중단하는 경우, while 이후의 코드를 수행

a = [1, 10, 9, 24, 25, 26]

i = 0
while i < len(a):
    if a[i] > 20:
        break
        
    print(a[i])
    i += 1
    
print('haha')

continue

break처럼 반복을 중단하지 않고, 다시 while 조건으로 점프
특정한 경우에는 코드를 수행하지 않고 다음으로 건너 뛰기 위해 사용

a = 7
while a > 0:
    a -= 1
    if a == 5:
        continue
    print(a)

문제) 번호맞추기

랜덤한 숫자 하나를 지정...random.randrange()..44
키보드로 특정한 숫자를 입력받아서 ...int(input())...17. 47

- 입력된 값이 더 작으면 작습니다...
- 입력된 값이 더 크면 큽니다...
- 정답입니다..
- 총 3번만에 정답을 맞췄습니다.

continue, break 키워드 사용..
import random

count = 0
while True:
    com = random.randrange(1, 21) # 1~20까지의 임의의 정수가 리턴
    num = int(input('1부터 20 사이의 숫자 하나를 입력하세요...'))
    count = count + 1

    if num > com:
        print('{} 숫자가 {}보다 큽니다'.format(num, com))
    elif num < com:
        print('{} 숫자가 {}보다 작습니다'.format(num, com))
    else:
        print('정답 {}! {}번 만에 성공'.format(num, count))
        break

for

for 반복 변수 in 반복 범위:
    코드 블록

리스트, 문자열 등등 순회 가능한 객체를 순회하면서 값을 처리할 때 사용
i는 매번 수행될 때마다 a의 아이템으로 순차적으로 변경
모든 아이템이 순회되면 for 블록 종료

a = [1, 2, 4, 3, 5]
for i in a:
    print(i, i*2)

조건문과 함께 사용하기

a = [1, 10, 3, 4, 5]
for num in a:
    if num % 2 == 0:
        print(num/2)
    else:
        print(num+1)

dict의 아이템 출력

dictionary의 경우 기본적으로 순회하게 되면 key 값을 참조
keys() 함수를 이용하여 key 값만 순회 가능
values() 함수를 이용하여 value 값만 순회 가능
items() 함수를 이용하여 tuple 형태로 key, value 순회 가능

a = {'korea': 'seoul', 'japan': 'tokyo', 'canada': 'ottawa'}
for key in a:
    print(key, a[key])

for value in a.values():
    print(value)

for key, value in a.items():
    print(key, value)

for에서 index 사용

기본적으로 for에 리스트를 순회하는 경우, 값만 추출
enumerate 함수를 이용하면 인덱스와 값 모두 사용 가능

a = [1, 2, 3, 4, 5]
for index, num in enumerate(a):
    if index > 2:
        print(index, num)

break

for의 경우에도 특정 조건일 때, loop 종료가 가능

a = [100, 90, 80, 70, 60, 50]
for num in a:
    if num < 80:
        break
    print(num)

continue

해당 아이템을 건너 뛰고 싶을 때 사용

a = [100, 90, 80, 70, 60, 50]
for num in a:
    if num >= 60 and num <= 70:
        continue
    print(num)

좋은 웹페이지 즐겨찾기