[Python] 반복문

박현희·2020년 8월 28일
0

조건에 따라 코드의 특벙 부분만 수행하거나 반복할 수 있는데 이처럼 코드의 진행 순서를 바꾸는 구문을 제어문이라고 합니다.
제어문에는 조건을 검사해 분기하는 구문인 조건문과 어떤 구간이나 조건을 만족하는 동안 코드의 일부분을 반복하는 구문인 반복문이 있습니다. 제어문을 이용하면 상황에 따라 다르게 코드를 실행할 수 있어서 프로그램이 지능이 있는 기기처럼 동작하게 만들 수 있습니다.
지정된 횟수만큼 작업을 반복하거나 지정된 조건에 맞춰 작업을 반복해야 할 때 반복문을 사용합니다. 반복문에는 for문과 while문이 있습니다.

반복 범위가 정해진 반복을 수행할 경우에는 for 문을
반복 범위 없이 조건에 따라서 반복 수행 여부를 결정하는 경우에는 while 문을 주로 이용합니다.

지정된 범위만큼 반복하는 for 문

for문의 구조

for 문은 다음의 구조를 가집니다. 또한 구조적인 특징으로 인해 "for~in" 문이라고도 합니다.

for <반복 변수> in <반복 범위>:
   <코드블록>

위의 for문에서 <반복 변수>는 <반복 범위>에 따라 변하면서 <코드 블록>을 실행합니다.

  • for 문의 흐름도

반복 범위 지정

for 문에서 <반복 범위>는 리스트와 range() 함수를 이용해 지정할 수 있습니다.

-리스트 이용

리스트는 <반복 범위>에서 이용할 수 있습니다.
a는 <반복 변수>가 됩니다.

in: for a in [0,1,2,3,4,5]:
      print(a) 

out:0
    1
    2
    3
    4
    5

-range() 함수 이용

for 문의 <반복 범위>를 지정하는 또 다른 방법은 범위를 반환하는 range() 함수를 이용하는 것입니다. 파이썬 내장 함수 range()는 for 문에서 숫자로 <반복 범위>를 지정할 때 많이 이용합니다.
아래는 이용 예제입니다.

range(start,stop,step)

여기서 start는 범위의 시작 지점, stop은 끝 지점,step는 증감의 크기입니다.

print(range(0,10,1)
#range(0,10)

print(list(range(0,10,1))
#[0,1,2,3,4,5,6,7,8,9]

다음은 range() 함수를 이용해 for 문에서 <반복 범위>를 지정한 예입니다.

in:for a in range(0,6,1):
   print(a)
out:0
    1
    2
    3
    4
    5

step이 1일 경우에는 생략하고 range(start,stop) 만 사용할 수 있다.또한 start가 0이고 step이 1일때는 range(stop) 도 가능하다.

-중첩 for 문

if 문의 중첩 조건문처럼 for 문도 중첩 for 문 구조를 이용해 중첩 반복문을 만들 수 있습니다. 구조는 다음과 같습니다.

for <반복 변수> in <반복 범위>:
   for <반복 변수2> in <반복 범위2>:
      <코드블록>

위의 중첩 for 문에서 <반복 변수1>의 첫 번째 데이터가 실행될 때 그 안에 있는 for 문을 만나게 되어 내부 for 문을 실행하고 다시 <반복 변수1>의 두 번째 데이터가 실행될 때 내부 for 문을 수행합니다. 이런 과정을 모두 거쳐서 for 문을 모두 마치면 코드가 끝납니다.

-여러 개의 리스트 다루기

names = ["James","Robert","Lisa","Mary"]
scores = [95,96,97,94]

위와 같이 리스트가 두 개 있을 때는 리스트가 하나만 있을 때처럼 <반복 범위>에 리스트를 넣어서 사용할 수가 없습니다. 이때는 리스트,튜플,세트,딕셔너리의 항목 개수(데이터의 "길이"라고도 함)를 반환하는 len() 함수와 범위를 반환하는 range() 함수를 이용해 for 문의 <반복 범위>를 지정하고 <반복 변수>를 이용해 리스트의 요소를 하나씩 부르면 됩니다.

다음은 이것을 구현한 코드입니다.

in:for k in range(len(names):
      print(names[k],scores[k])
out: James 95
     Robert 96
     Lisa 97
     Mary 94

길이가 같은 리스트가 여러 개 있는 경우에는 데이터를 하나로 묶어주는 zip() 함수를 이용해 <반복 범위>를 지정하고 데이터별로 <반복 변수>를 지정해 이용할 수도 있습니다.

for var1, var2, in zip(list1,list2):
   <코드 블록>

조건에 따라 반복하는 while 문

while문은 조건에 따라 반복 여부를 결정합니다.

-while 문의 구조

while <조건문>:
   <코드블록>
  • while 문의 흐름도
in: 
i = 0
sum = 0

print("i sum")
while (sum < 20):
   i = i + 1
   sum = sum + i
   print(i, sum)
   
out:
i sum
1 1
2 3
3 6
4 10
5 15
6 21

-무한 반복 while 문

앞에서는 while 문의 조건이 만족하는 경우에만 수행했지만 이번 경우에는 무조건 계속 반복을 수행합니다.

while True:
   print("while test")

while이 늘 True이기에 계속 반복합니다.

0개의 댓글