for문은 반복 횟수가 정해져 있을 때, while문은 반복 횟수가 정해져있지 않을 때 주로 사용한다.
for 변수 in range(횟수):
반복할 코드
시작하는 숫자, 끝나는 숫자 지정
for 변수 in range(시작, 끝):
증가폭 사용하기
for 변수 in range(시작, 끝, 증가폭):
숫자 감소시키기
>>> for i in range(10, 0): # range(10, 0)은 동작하지 않음
... print('Hello, world!', i)
range는 숫자가 증가하는 기본 값이 양수1이라 아무것도 출력되지 않는다.
증가폭을 음수로 지정하면 숫자가 감소한다.
>> for i in range(10, 0, -1): # 10에서 1까지 1씩 감소 ... print('Hello, world!', i) Hello, world! 10 Hello, world! 9 Hello, world! 8 ... (생략) Hello, world! 2 Hello, world! 1
reversed를 사용해 숫자의 순서를 반대로 뒤집을 수 있다.
for 변수 in reversed(range(횟수))
for 변수 in reversed(range(시작, 끝))
for 변수 in reversed(range(시작, 끝, 증가폭))>> for i in reversed(range(10)): # range에 reversed를 사용하여 숫자의 순서를 반대로 뒤집음 ... print('Hello, world!', i) # 9부터 0까지 10번 반복 ... Hello, world! 9 Hello, world! 8 Hello, world! 7 ... (생략) Hello, world! 1 Hello, world! 0
range뿐만 아니라 튜플, 리스트, 문자열로도 반복할 수 있다.
세로로 출력되는 값을 한 줄에 붙여서 출력하고 싶을 때 end= 활용
>> for letter in 'Python': ... print(letter, end=' ') ... P y t h o n
reversed를 사용해 문자 뒤집어서 출력 가능
>> for letter in reversed('Python'): ... print(letter, end=' ') ... n o h t y P
초기식
while 조건식:
반복할 코드
변화식
무작위로 난수를 출력하는 random 모듈 사용(import 필요)
random.randint(a, b) 지정된 정수 a와 b 사이의 정수를 무작위로 생성
3이 나올 때까지 돌기
import random # random 모듈을 가져옴 i = 0 while i != 3: # 3이 아닐 때 계속 반복 i = random.randint(1, 6) # randint를 사용하여 1과 6 사이의 난수를 생성 print(i)
random.choice함수로 시퀀스 객체에서 무작위로 요소 선택하기
()안에 리스트, 튜플, range, 문자열 등을 넣을 수 있다.>> dice = [1, 2, 3, 4, 5, 6] >> random.choice(dice) 1 >> random.choice(dice) 4 >> random.choice(dice) 3
True나 True값으로 취급하는 값을 조건식에 넣는다.
while True:
print('Hello, world!')
while 1: # 0이 아닌 숫자는 True로 취급하여 무한 루프로 동작
print('Hello, world!')
while 'Hello': # 내용이 있는 문자열은 True로 취급하여 무한 루프로 동작
print('Hello, world!')
for문에서 끝내기. 100까지 출력
for i in range(10000): # 0부터 9999까지 반복 print(i) if i == 100: # i가 100일 때 break # 반복문을 끝냄. for의 제어흐름을 벗어남
while문에서 끝내기. 99까지 출력
i = 0 while True: # 무한 루프 print(i) i += 1 # i를 1씩 증가시킴 if i == 100: # i가 100일 때 break # 반복문을 끝냄. while의 제어흐름을 벗어남
for문에서 코드 실행 건너뛰기. 1~99까지 홀수만 출력
for i in range(100): # 0부터 99까지 증가하면서 100번 반복 if i % 2 == 0: # i를 2로 나누었을 때 나머지가 0면 짝수 continue # 아래 코드를 실행하지 않고 건너뜀 print(i)
while문에서 코드 실행 건너뛰기. 1~99까지 홀수만 출력
i = 0 while i < 100: # i가 100보다 작을 때 반복. 0부터 99까지 증가하면서 100번 반복 i += 1 # i를 1씩 증가시킴 if i % 2 == 0: # i를 2로 나누었을 때 나머지가 0이면 짝수 continue # 아래 코드를 실행하지 않고 건너뜀 print(i)
for, while의 반복할 코드에서 아무 일도 하지 않지만, 반복문의 형태를 유지하고 싶다면 pass를 사용하면 된다.
for i in range(10): # 10번 반복
pass # 아무 일도 하지 않음
while True: # 무한 루프
pass # 아무 일도 하지 않음
표준 입력으로 정수 두 개가 입력됩니다(첫 번째 입력 값의 범위는 1~200, 두 번째 입력 값의 범위는 10~200이며 첫 번째 입력 값은 두 번째 입력 값보다 항상 작습니다). 다음 소스 코드를 완성하여 첫 번째 정수와 두 번째 정수 사이의 숫자 중 3으로 끝나지 않는 숫자가 출력되게 만드세요. 정답에 코드를 작성할 때는 while True:에 맞춰서 들여쓰기를 해주세요.
start, stop = map(int, input().split())
i = start
while True:
if i % 10 == 3: # 문송하게도 3 % 10이 3인 걸 몰랐다.
# 3 % 10 몫 0 나머지 3! 3/10이 0.3!!!!!!!
i+= 1
continue
if i > stop:
break
print(i, end=' ')
i += 1