TIL 13. 파이썬 - 반복문 (for, while, break, continue)

문승준·2021년 8월 26일
0

Python

목록 보기
5/8

1. for 반복문

  • for 변수 in 문자열(or 튜플 or 리스트):
    반복적으로 실행하고자 하는 명령문

  • 요소를 차례대로 꺼내어 명령문을 실행한다.
    → 시퀀스의 길이만큼 반복한다.

  • 반복 횟수가 정해져 있을 때 자주 사용한다.

  • for 문에서 선언된 변수는 for 문 내부에서만 사용할 수 있다.


forrange 사용하기

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

  • range 에서 in 으로 숫자를 하나씩 꺼내서 코드를 실행한다.

  • 반복할 코드로 순환하는 것을 루프라고 한다.

  • 변수 i를 루프 인덱스라 부른다. ( i, j, k )

    내부에서 i에 다른 값을 할당해도 결과에 영향을 주지 않는다.

반복하는 숫자를 지정하기 (or 감소하기)

  • for 변수 in range(시작, 끝, 증가폭):

  • 끝나는 숫자는 포함되지 않는다.

  • 음수 증가폭으로 숫자 감소시키기

>>> for i in range(10, 0, -1):    # 10에서 1까지 1씩 감소
...     print('Hello, world!', i)
...
Hello, world! 10
Hello, world! 9
... (생략)
Hello, world! 2
Hello, world! 1

# 0은 포함되지 않고 1까지만 감소한다.

  • reversed로 숫자 감소시키기

    for 변수 in reversed(range(시작, 끝, 증가폭))

# reversed를 사용하여 숫자의 순서를 반대로 뒤집기

>>> for i in reversed(range(10)):    
...     print('Hello, world!', i)
...
Hello, world! 9
Hello, world! 8
... (생략)
Hello, world! 1
Hello, world! 0

# 9부터 0까지 10번 반복된다.

입력한 횟수대로 반복하기

count = int(input('반복할 횟수: '))
 
for i in range(count):
    print('Hello, world!')
    
    

시퀀스 객체로 반복하기

  • range 대신 리스트, 튜플, 문자열을 넣을 수 있다.

    → 요소를 꺼내면서 반복한다.

# 문자열 요소를 꺼내서 반복하기

>>> for letter in 'Python':
...     print(letter, end=' ')  # end 값을 1칸 공백으로 지정
...
P y t h o n


# reversed로 뒤집어서 출력하기

>>> for letter in reversed('Python'):
...     print(letter, end=' ')
...
n o h t y P

EX) 구구단 출력하기

# 구구단 전체 출력하기

for col in range(2, 10):

    for row in range(1, 10):

        print (col, "x", row, "=", col * row)


# 입력받은 숫자의 구구단 출력하기

i = int(input())

for j in range(1, 10):

    print(i, '*',  j , '=', i * j)

# print의 콤마는 기본적으로 sep=' ' 이다


2. while 반복문

  • 초기식
    while 조건식:
    반복할 코드
    변화식

  • 변화식을 생략하면 무한 루프가 된다.

  • 반복 횟수가 정해져 있지 않을 때 자주 사용한다.

  • 입력한 횟수대로 반복하기

# 초깃값이 0 일때

count = int(input('반복할 횟수를 입력하세요: '))
 
i = 0
while i < count:     # i가 count보다 작을 때 반복
    print('Hello, world!', i)
    i += 1

# 초깃값을 입력 받을때

count = int(input('반복할 횟수를 입력하세요: '))
 
while count > 0:     # count가 0보다 클 때 반복
    print('Hello, world!', count)
    count -= 1       # count를 1씩 감소시킴

반복횟수가 정해지지 않은 경우

random 모듈로 난수 생성하기

  • import random → 모듈 가져오기
  • random.random() → 실수 출력
  • 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(시퀀스 객체) → 객체의 요소를 무작위로 선택
# dice 리스트에서 랜덤으로 선택하기

>>> dice = [1, 2, 3, 4, 5, 6]
>>> random.choice(dice)
1
>>> random.choice(dice)
4
>>> random.choice(dice)
3

# 리스트, 튜플, range, 문자열에 적용 가능

무한 루프 만들기

  • 조건식에 True 를 지정하거나 True로 취급하는 값을 사용
  • IDLE이나 콘솔에서 Ctrl + C 로 끝낼 수 있다.

EX) 교통카드 잔액 출력하기

# 사용할때마다 잔액 출력하기

balance = int(input())   # 금액을 입력

while balance >= 1350:   # 요금은 1350원
    balance -= 1350      # 최초금액 출력안하기
    print(balance)       # 마지막 잔액 출력을 위해 마지막에 위치
    
    

3. break, continue로 반복문 제어하기


break로 반복문 끝내기

  • 반복을 중단하고 빠져나온다.

for에서 break

for i in range(10000):    # 0부터 9999까지 반복
    print(i)
    if i == 100:    # i가 100일 때
        break       # 반복문을 끝냄. for의 제어흐름을 벗어남
        
        

while에서 break

i = 0
while True:    # 무한 루프
    print(i)
    i += 1          # i를 1씩 증가시킴
    if i == 100:    # i가 100일 때
        break       # 반복문을 끝냄. while의 제어흐름을 벗어남
        
        

continue로 건너뛰기

  • 반복을 유지한 상태로 코드의 실행을 건너뛴다.

for에서 continue

# 0~99까지 반복하면서 홀수만 출력하기

for i in range(100):       # 0부터 99까지 증가하면서 100번 반복
    if i % 2 == 0:         # i를 2로 나누었을 때 나머지가 0면 짝수
        continue           # 짝수일땐 아래 코드를 실행하지 않고 건너뜀
    print(i)
    
    

while에서 continue

# 0~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)

# 무한루프일땐 홀수만 계속 출력되고 멈추지 않는다.

입력한 횟수대로 반복하기

# 입력한 숫자만큼 출력하기

count = int(input('반복할 횟수를 입력하세요: '))
 
i = 0
while True:    # 무한 루프
    print(i)
    i += 1
    if i == count:    # i가 입력받은 값과 같을 때
        break         # 반복문을 끝냄

# 3 입력시 0 1 2 세번 출력


# 입력한 숫자까지 홀수 출력하기

count = int(input('반복할 횟수를 입력하세요: '))
 
for i in range(count + 1):       # 0부터 증가하면서 count까지 반복(count + 1)
    if i % 2 == 0:               # i를 2로 나누었을 때 나머지가 0이면 짝수
        continue                 # 아래 코드를 실행하지 않고 건너뜀
    print(i)

# 7 입력시 1 3 5 7 네번 출력

EX) 3으로 끝나지 않는 숫자 출력

  • 두 정수 사이의 숫자 중 3으로 끝나는 것만 제외하고 모두 출력하기
start, stop = map(int, input().split())

i = start

while True:
    if i % 10 == 3:    # 3으로 끝나는 숫자는 continue로 출력 안하기
        i += 1
        continue
    if i > stop:       # stop 숫자까지 출력해야함
        break
    print(i, end=' ')
    i += 1

# 입력 1 20
# 결과 1 2 4 5 6 7 8 9 10 11 12 14 15 16 17 18 19 20

profile
개발자가 될 팔자

0개의 댓글