JSITCLUB

파이썬 독학#15 - 같은 작업은 나에게 - 반복문 본문

파이썬/입문

파이썬 독학#15 - 같은 작업은 나에게 - 반복문

jsitclub 2020. 5. 18. 19:18

반복문은 컴퓨터가 같은 작업을 진행 해야 할때 사용하는 문장입니다. 만약 "hello"라는 단어를 1000번 출력해야 한다면, 단순히 print("hello")를 1000번 적어도 되지만 이때 반복문을 사용하면 간단히 프로그래밍을 할 수 있게 됩니다.

파이썬의 반복문에는 크게 while문 과 for문이 있습니다. 대체로 while문은 반복횟수를 예측할 수 없을때, for문은 반복횟수를 예측할 수 있을때 사용합니다.

1. while 문

while 조건 :

        실행문 1

        실행문 2

  • 조건에 맞을 동안(조건의 결과가 True일 동안) 반복되고 조건에 맞지 않으면 반복을 멈추고 다음문장이 실행됩니다.
  • 조건 : 주로 비교연산자를 사용합니다. (결과가 True 동안 실행문이 실행됩니다.)
  • 조건 뒤에 콜론(:)을 반드시 붙여줍니다.
  • 조건에 따라 반복 할 부분은 반드시 들여쓰기를 해줍니다. 들여쓰기 한 부분만 조건에 영향을 받습니다.(실행문1,실행문2)

주의 1)  while문은 반드시 '~할 동안' 이라고 해석해야 합니다. 간혹 무심코 '~일때 까지'라고 해석하는데, 그러면 조건을 반대로 해석하는것이 되어버립니다.

코드 결과 바른예 틀린예
a=0

while a<10:
    
     a+=1
   
     print(a)
1부터 10 까지 출력
'a가10보다 작을동안 반복'

-> 의미를 통해 바른 결과를 예측할 수 있게 된다. 


'a가 10보다 작을때까지 반복'

-> 이말은 10보다 크다가 작아질때 까지 반복하겠다는 의미이므로 틀린 해석이 된다.

 

주의 2) while문의 조건에 따라 전혀 돌지 않거나 무한히 반복하게 됩니다.

만약 위의 코드를 

a=0

while a>10:    

     a+=1
   

     print(a)

라고 고쳐 실행하면 결과는 아무것도 나오지 않습니다. 변수 a값을 0으로 정하고 a가 10보다 클 동안 반복하라고 했으니 당연히 반복이 안되겠죠.

이번에는 a+=1 이라는 문장을 빼면 어떻게 될까요?

a=0

while a<10:
    
     print(a)

0이 끝없이 출력 될겁니다. (참고로 멈추려면 ctrl+c ) 이 경우는 변수 a값을 0으로 정하고 a를 변경하는 코드가 없으므로 (a는 계속 10보다 작으므로) 무한히 반복됩니다.

그러므로 while문을 사용할 때는 조건을 어떻게 코딩할 것인지가 매우 중요합니다.

 

2.for 문

for 변수 in 이터러블 객체 :

        실행문 1

        실행문 2

 

  • 나열형의 각 요소가 하나씩 변수에 담은 후 실행된다.(즉 요소의 갯수만큼 반복합니다.)
  • 이터러블 객체 :  요소를 하나씩 갖고와서 보여줄수 있는 자료형들 .  예를 들어 문자열(str),리스트(list), 튜플(tuple), range() 와 같은 시퀀스형 과  사전(dict),집합(set) 과 같은 것들이 이에 해당합니다.
  • 조건 뒤에 콜론(:)을 반드시 붙여줍니다.
  • 반복 할 부분은 반드시 들여쓰기를 해줍니다. 들여쓰기 한 부분만 조건에 영향을 받습니다.(실행문1,실행문2)

#1

문자열의 요소을 반복해서 출력 합니다. (문자열은 각 글자가 요소 이므로 한글자씩 출력 됩니다.)

#2

리스트의 요소를 반복해서 출력 합니다.

#3

range함수의 요소를 출력합니다.(range함수는 입력된 매개변수에 따라 요소가 결정됩니다.)

#4

당연 하겠지만, 이터러블 객체가 아닌 정수형을 넣으면 TypeError: 'int' object is not iterable 와 같이 에러가 납니다.

#while 문
#1
a=0
while a<10:    
     a+=1   
     print(a)

#2
a=0
while a>10:    
     a+=1   
     print(a)


#3 (ctrl + c 로 멈춤)
a=0
while a>10:    
     print(a)




#for 문
#1
a="hello"
for x in a:
    print(x)

print("-"*40)

#2
b=["hello","hi","good afternoon"]
for x in b:
    print(x)

print("-"*40)

#3
for x in range(5):
    print(x)

print("-"*40)

#4
b=["hello","hi","good afternoon"]
for x in 3:
    print(x)

 

Comments