본문 바로가기
Python 코딩도장

파이썬 코딩도장 Unit 16 정리 : for 반복문

by chanfficial 2022. 1. 15.

Unit 16

1. for과 range 사용하기

  • for 반복문은 range에 반복할 횟수를 지정하고 앞에 in 변수를 입력한 다음 끝에 : (콜론)을 붙인 뒤, 다음 줄에 반복할 코드를 넣는다.
  • for 다음에 오는 코드는 반드시 들여쓰기를 해야한다.
    for 변수 in range(횟수):
         반복할 코드​
  • for 반복문은 반복 횟수가 정해져 있을 때 주로 사용한다.
  • for 변수 in range(횟수) → 반복할 코드 의 형식으로 순환하는 것을 루프(loop)라고 한다.

 

1-1. 반복문에서 변수의 변화 알아보기

>>> for i in range(100):
...     print('Hello, world!', i)
...
Hello, world! 0
Hello, world! 1
Hello, world! 2
... (생략)
Hello, world! 98
Hello, world! 99

- Hello, world 뒤에 0부터 99까지 출력된 것을 보면, range에서 꺼낸 숫자는 변수 i에 저장되며 반복할 코드에서 사용할 수 있다는 것을 알 수 있다.

  • 변수 i를 루프 인덱스라고도 부르며 index의 첫 머리글자를 따서 i를 주로 사용한다.

※ 버전별 range의 차이점 

: 파이썬 2.7에서 range를 사용하면 실제로 연속된 숫자가 들어있는 리스트를 만들지만 파이썬 3에서는 range 객체(반복이 가능한 객체)를 만든다.

  • 파이썬 2.7
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]​
  • 파이썬 3
    >>> range(10)
    range(0, 10) # range 객체 생성
    >>> list(range(10)) # range 객체를 리스트로 만듦
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]​
    - 파이썬 2.7의 range는 리스트를 만들어내기 때문에 아주 큰 숫자를 지정하면 메모리를 많이 사용하게 된다. 그래서 리스트 대신 객체를 생성할 때는 xrange를 사용하고, 파이썬 3에서는 range가 객체를 생성하는 방식으로 바뀌었다.

 

2. for과 range 응용하기

2-1. 시작하는 숫자와 끝나는 숫자 지정하기

  • range에 횟수만 지정하면 숫자가 0부터 시작하지만, 시작하는 숫자와 끝나는 숫자를 지정하여 반복할 수 있다.
    # for 변수 in range(시작, 끝):
    >>> for i in range(5, 9):    # 5부터 8까지 반복
    ...     print('Hello, world!', i)
    ...
    Hello, world! 5
    Hello, world! 6
    Hello, world! 7
    Hello, world! 8​
    - 마지막 숫자는 range의 끝나는 숫자보다 1이 작다.(끝나는 숫자는 생성된 숫자에 포함되지 않는다.)

 

2-2. 증가폭 사용하기

# for 변수 in range(시작, 끝, 증가폭):
>>> for i in range(0, 10, 2): # 0부터 8까지 2씩 증가
...     print('Hello, world!', i)
...
Hello, world! 0
Hello, world! 2
Hello, world! 4
Hello, world! 6
Hello, world! 8

- 0부터 8까지 2씩 증가하는 코드

 

 

2-3. 숫자 감소시키기

  • range에 증가폭을 음수로 지정하면 숫자가 감소한다.
    >>> 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​
    - 10부터 1까지 -1씩 증가 == 10부터 1까지 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​

 

2-4. 입력한 횟수만큼 반복하기

count = int(input('반복할 횟수를 입력하세요: '))
 
for i in range(count):
    print('Hello, world!', i)
  • 먼저 input으로 받은 입력 값을 count 변수에 저장하고, 반복문에서 for i in range(count) 처럼 range에 count를 넣어 입력받은 숫자만큼 반복되게 한다.

 

3. 시퀀스 객체로 반복하기

  • for는 리스트, 튜플, 문자열등 시퀀스 객체로 반복할 수 있다.
  • 코드의 for에 range 대신 리스트를 넣으면 리스트의 요소를 꺼내면서 반복한다.
    >>> a = [10, 20, 30]
    >>> for i in a:
    ...     print(i)
    ...
    10
    20
    30​
  • 튜플도 마찬가지로 튜플의 요소를 꺼내면서 반복한다.
    >>> fruits = ('apple', 'orange', 'grape')
    >>> for fruit in fruits:
    ...     print(fruit)
    ...
    apple
    orange
    grape​
  • for에 문자열을 지정하면 문자를 하나씩 꺼내면서 반복한다.
    >>> for letter in 'Python':
    ...     print(letter, end=' ')
    ...
    P y t h o n​
    - print에 end=' '를 지정했기 때문에 줄바꿈이 되지 않고 각 문자가 공백으로 띄워져서 출력된다. 이런 문자열을 뒤집어서 출력하고 싶다면 reversed를 활용한다.
  • reversed는 시퀀스 객체를 넣으면 시퀀스 객체를 뒤집어 주는데, 이때 원본 객체 자체가 바뀌는 것이 아니라 뒤집어서 꺼내주는 것이다.
    # reversed(시퀀스객체)
    >>> for letter in reversed('Python'):
    ...     print(letter, end=' ')
    ...
    n o h t y P​