파이썬 반복문 for, while, break, continue

Yeonu·2020년 11월 17일
0

Python 이론

목록 보기
7/30
post-thumbnail

for문은 반복 횟수가 정해져 있을 때, while문은 반복 횟수가 정해져있지 않을 때 주로 사용한다.

for와 range

for 변수 in range(횟수):
반복할 코드

for와 range 응용하기

  1. 시작하는 숫자, 끝나는 숫자 지정
    for 변수 in range(시작, 끝):

  2. 증가폭 사용하기
    for 변수 in range(시작, 끝, 증가폭):

  3. 숫자 감소시키기

    >>> 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문

초기식
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



while문으로 무한루프 만들기

True나 True값으로 취급하는 값을 조건식에 넣는다.

while True: 
    print('Hello, world!')

while 1:    # 0이 아닌 숫자는 True로 취급하여 무한 루프로 동작
    print('Hello, world!')

while 'Hello':    # 내용이 있는 문자열은 True로 취급하여 무한 루프로 동작
    print('Hello, world!')



break로 반복문 끝내기

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의 제어흐름을 벗어남



continue로 코드 실행 건너뛰기

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)



반복문과 pass

for, while의 반복할 코드에서 아무 일도 하지 않지만, 반복문의 형태를 유지하고 싶다면 pass를 사용하면 된다.

for i in range(10):  # 10번 반복
    pass               # 아무 일도 하지 않음

while True:    # 무한 루프
    pass       # 아무 일도 하지 않음



@심사문제 18.6

표준 입력으로 정수 두 개가 입력됩니다(첫 번째 입력 값의 범위는 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

0개의 댓글