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
- 파이썬 2.7의 range는 리스트를 만들어내기 때문에 아주 큰 숫자를 지정하면 메모리를 많이 사용하게 된다. 그래서 리스트 대신 객체를 생성할 때는 xrange를 사용하고, 파이썬 3에서는 range가 객체를 생성하는 방식으로 바뀌었다.>>> range(10) range(0, 10) # range 객체 생성 >>> list(range(10)) # range 객체를 리스트로 만듦 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
2. for과 range 응용하기
2-1. 시작하는 숫자와 끝나는 숫자 지정하기
- range에 횟수만 지정하면 숫자가 0부터 시작하지만, 시작하는 숫자와 끝나는 숫자를 지정하여 반복할 수 있다.
- 마지막 숫자는 range의 끝나는 숫자보다 1이 작다.(끝나는 숫자는 생성된 숫자에 포함되지 않는다.)# 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
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에 증가폭을 음수로 지정하면 숫자가 감소한다.
- 10부터 1까지 -1씩 증가 == 10부터 1까지 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
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에 문자열을 지정하면 문자를 하나씩 꺼내면서 반복한다.
- print에 end=' '를 지정했기 때문에 줄바꿈이 되지 않고 각 문자가 공백으로 띄워져서 출력된다. 이런 문자열을 뒤집어서 출력하고 싶다면 reversed를 활용한다.>>> for letter in 'Python': ... print(letter, end=' ') ... P y t h o n
- reversed는 시퀀스 객체를 넣으면 시퀀스 객체를 뒤집어 주는데, 이때 원본 객체 자체가 바뀌는 것이 아니라 뒤집어서 꺼내주는 것이다.
# reversed(시퀀스객체) >>> for letter in reversed('Python'): ... print(letter, end=' ') ... n o h t y P
'Python 코딩도장' 카테고리의 다른 글
파이썬 코딩도장 Unit 18 정리 : break, continue로 반복문 제어 (0) | 2022.01.15 |
---|---|
파이썬 코딩도장 Unit 17 정리 : while 반복문 (0) | 2022.01.15 |
파이썬 코딩도장 Unit 15 정리 : elif (0) | 2022.01.14 |
파이썬 코딩도장 Unit 14 정리 : else (0) | 2022.01.13 |
파이썬 코딩도장 Unit 13 정리 : if 조건문 (0) | 2022.01.13 |