코딩도장_Unit 16. for와 range 사용하기

김민주·2021년 12월 30일
0

AIFFEL_풀잎스쿨

목록 보기
8/23
post-thumbnail

프로그래밍 언어에서는 반복되는 작업을 간단하게 처리하기 위해 반복문이라는 기능을 제공한다. 반복문은 반복 횟수, 반복 및 정지 조건을 자유자재로 제어할 수 있다.

16.1 for와 range 사용하기

for반복문은 range에 반복할 횟수를 지정하고 앞에 in과 변수를 입력한다. 그리고 끝에 클론(:)을 붙인 뒤 다음 줄에 반복할 코드를 넣는다.

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

for 다음 줄에 오는 코드는 반드시 들여쓰기를 해준다.

📎 참고) 에러
SyntaxError: invalid syntax: for반복문의 형식을 지키지 않았을 떄 발생하는 구문 에러이다. for 반복문의 형식에 맞는지 확인한다. 특히 for 끝에 콜론(:)을 빠뜨리지 않았는지 확인한다.
SyntaxError: expected an indented block: for다음 줄에 오는 반복할 코드의 들여쓰기가 맞지 않아서 발생하는 구문 에러이다. 반복할 코드에서 들여쓰기 4칸을 했는지 확인한다.

for반복문은 range에서 in으로 숫자를 하나씩 꺼내서 반복하는 방식이다. for는 숫자를 꺼낼 때마다 코드를 실행한다.

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

for 변수 in range(횟수) -> 반복할 코드로 순환하는 것을 루프(loop)라고 부른다.

16.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

📎 참고) 반복문의 변수 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)
>> list(range(10))  # range 객체를 리스트로 만듦
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

16.2 for와 range 응용하기

range의 다양한 기능을 활용하여 for 반복문을 사용해본다.

16.2.1 시작하는 숫자와 끝나는 숫자 지정하기

  • for 변수 in range(시작, 끝):
>>> for i in range(5, 12):    # 5부터 11까지 반복
       print('Hello, world!', i)

# 실행결과
Hello, world! 5
Hello, world! 6
Hello, world! 7
Hello, world! 8
Hello, world! 9
Hello, world! 10
Hello, world! 11

16.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

16.2.3 숫자를 감소시키기

>>> for i in range(10, 0): # range(10, 0)은 동작하지 않음
        print('Hello, world!', i)

range에서 시작하는 숫자를 큰 숫자, 끝나는 숫자를 작은 숫자로 지정하면 아무것도 출력되지 않는다. range는 숫자가 증가하는 기본 값이 양수 1이기 때문이다.

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

증가폭을 음수로 지정하는 방법 말고도 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

📎 참고) 반복문의 변수 i를 변경할 수 있을까? 🔎
forrange로 반복하면서 변수 i를 변경하면 어떻게 될까?

>> for i in range(10):
        print(i, end=' ')
        i = 10 
 # 실행결과
 0 1 2 3 4 5 6 7 8 9

변수 i는 반복할 때마다 다음 값으로 덮어써지기 때문에 값을 할당해도 변수에 영향을 주지 못한다.

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

count = int(input('반복할 횟수를 입력하세요: '))
 
for i in range(count):
    print('Hello, world!', i)

반복할 횟수를 입력하세요:'가 출력되면 여기에 3을 입력하고 엔터

# 실행결과
반복할 횟수를 입력하세요: 3 (입력)
Hello, world! 0
Hello, world! 1
Hello, world! 2

16.3 시퀀스 객체로 반복하기

for는 리스트, 튜플, 문자열 등 시퀀스 객체로 반복할 수 있다.

리스트 : 리스트의 요소를 꺼내면서 반복

>>> a = [10, 20, 30, 40, 50]
>>> for i in a:
        print(i)
# 실행결과
10
20
30
40
50

튜플 : 튜플의 요소를 꺼내면서 반복

>>> fruits = ('apple', 'orange', 'grape')
>>> for fruit in fruits:  # 반복문의 변수 i 대신 fruit 사용
        print(fruit)
# 실행결과
apple
orange
grape

문자열 : 문자를 하나씩 꺼내면서 반복

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

16.4 연습문제 : 리스트의 요소에 10을 곱해서 출력하기

다음 소스 코드를 완성하여 리스트 x에 들어있는 각 숫자(요소)에 10을 곱한 값이 출력되게 만드세요. 모든 숫자는 공백으로 구분하여 한 줄로 출력되어야 합니다.

x = [49, -17, 25, 102, 8, 62, 21]
for i in x:
    print(i * 10, end=' ')
# 실행결과
490 -170 250 1020 80 620 210 

for에 리스트를 지정하면 각 요소를 꺼내면서 반복 가능
따라서, for i in x:와 같이 반복문을 만들고 꺼낸 변수 i에 10을 곱해서 print하면된다.

profile
안녕하세요 :-) 잘 부탁드립니다!

0개의 댓글