본문 바로가기
IT지식/Python

파이썬 for문 모든것

by 모두의 향연 2021. 10. 23.
728x90
반응형

'Hello World!'를 100번 출력한다고 하자.

print('Hello World!')
print('Hello World!')
print('Hello World!')
         …(생략)
print('Hello World!')
print('Hello World!')

이런 식으로 100번 쓰고 앉아 있을 순 없잖아?

 

1. for와 range 사용하기
for 변수 in range(횟수):
     반복할 코드

for반복문은 range에 반복할 횟수를 지정하고 앞에 in과 변수를 입력한다.

끝에 콜론(:)을 붙이고 반복할 코드를 넣는다.

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

for i in range(100):
    print('Hello World!')

<출력>
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
  …(생략)
Hello World!
Hello World!

100번 출력된다. 일일이 치는 것보다 for를 이용하니 편리하다.

출처: 코딩도장

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

 

 

 

2. 반복문에서 변수의 변화 알기
for i in range(100):
    print('Hello World!',i)

<출력>
Hello World!   0
Hello World!   1
Hello World!   2
Hello World!   3
Hello World!   4
  …(생략)
Hello World!   98
Hello World!   99

0부터 99까지 출력된다. range에서 꺼낸 숫자는 변수 i에 저장되며 반복할 코드에서 사용 가능하다.

*반복문의 변수 'i': '루프 인덱스'라고도 부르며 index의 첫머리글자 따서 i를 주로 사용

 

 

3. 시작하는 숫자와 끝나는 숫자 지정하기
  • for 변수 in range(시작, 끝):
>>> for i in range(5,100):
    print('Hello World!', i)
    
Hello World! 5
Hello World! 6
Hello World! 7
Hello World! 8
Hello World! 9
  …(생략)
Hello World! 98
Hello World! 99

5부터 99까지 출력된다. 마지막 숫자는 range의 끝나는 숫자보다 1이 작다.

 

4. 숫자를 감소시키기
>>> for i in range(10,0):
print(i)


>>> 

만약 range(10,0)이면, 알아서 감소할까? 아뇨, 아무 일도 일어나지 않는다.

range는 숫자가 증가하는 기본 값이 양수 1이기 때문

그래서 만약 감소시키려면 range(10,0,-1): 이런 식으로 써줘야 한다.

 

 

5 증가폭 사용하기
  • 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

range에 0,10,2를 넣으면 0부터 8까지 2씩 증가한다. 10은 포함 안 하므로 8까지 출력됨.

 

 

6. 증가폭 반대로 뒤집기
  • for 변수 in reversed(range(횟수))
  • for 변수 in reversed(range(시작, 끝))
  • for 변수 in reversed(range(시작, 끝, 증가폭))

reversed 사용하면 된다. 당연히 시작이 끝보다는 높은 수여야 한다.

range괄호 안에 숫자는 포함 x 10이면 9부터 0까지 RGRG?

>>> for i in reversed(range(10)):
           print('Hello World!', i)


Hello World! 9
Hello World! 8
Hello World! 7
Hello World! 6
Hello World! 5
Hello World! 4
Hello World! 3
Hello World! 2
Hello World! 1
Hello World! 0

 

 

7.  반복문의 변수 i를 변경하기

i에 10을 넣으면 어떻게 될까? 9 8 7 6 ... 1 0 이런 식으로 될까?

>>>for i in range(10):
          print(i, end=' ')
          i = 10


0 1 2 3 4 5 6 7 8 9

아니다. i에 10이 할당되면 9부터 출력될 것 같지만 그렇지 않다. 왜냐하면 변수 i는 반복할 때마다 다음 값으로 덮어써 지기 때문에 print로 출력될 당시엔 i값이 들어오고 그다음에 10이 되기 때문에 다시 for문으로 올 땐 1이 된다. 0→10→1→10→2→10... 이런 식으로

 

 

8. 입력한 횟수대로 반복하기
n=int(input('반복할 횟수를 입력하세요.'))
for i in range(n):
    print('안녕!', i)



반복할 횟수를 입력하세요.5
안녕! 0
안녕! 1
안녕! 2
안녕! 3
안녕! 4

입력값으로 5를 입력했으므로 5 값이 n에 들어간다. 그럼 range안에 5가 들어가고 그만큼 반복한다.

 

 

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

for에 range대신 리스트를 넣으면 리스트의 요소를 꺼내면서 반복한다.

>>> a=[10,20,30,40,50]
>>> for i in a:
print(i)


출력:
10
20
30
40
50

튜플도 마찬가지,

>>> fruits=('apple','banana','orage')
>>> for fruit in fruits:
print(fruit)


출력:
apple
banana
orage

튜플도 리스트처럼 똑같다. 추각로 for다음에 변수 i 대신에 fruit처럼 다른 변수를 사용해도 무방하다.

 

>>> for letter in 'feastforall':
print(letter,end=' ')


출력: f e a s t f o r a l l 

문자열도 가능하다.

이 문자열을 뒤집고 싶다면? (5번에 가면 자세한 설명나와있음)

>>> for letter in reversed('feastforall'):
print(letter,end='.')

출력:
l.l.a.r.o.f.t.s.a.e.f.

 

728x90
반응형