Python 반복문 for, while

18022 단어 for반복문pythonfor

while과 for의 차이점

for문은 보통은 명시적으로 몇번 실행해야 하는지 정해진 상태에서 많이 사용합니다.
while문은 몇번 실행해야할지 모르는 상태에서 많이 사용합니다.
while문의 경우 무한루프를 만들기 위해서도 사용이 됩니다.

특정한 입력이나 값이 나올때까지 지속적으로 실행이 되다가 특정한 입력이나 값이 나오게 되면 while문을 종료 하는 것이죠.
for문의 경우 파이썬에서는 무한루프로 만들 수가 없습니다.
for문의 경우 list, array 같은 길이가 정해져 있는 값을 사용하기 위해서 반복문을 많이 사용합니다.
while문은 사용자의 입력 또는 특정한 값이 나올 때까지 지속적으로 반복할때 사용합니다.

1. for

파이썬의 직관적인 특징을 가장 잘 대변해 주는 것이 바로 이 for문입니다. while문과 비슷한 반복문인 for문은 매우 유용하고 문장 구조가 한눈에 쏙 들어온다는 장점이 있습니다.

문법

리스트나 튜플, 문자열의 첫 번째 요소부터 마지막 요소까지 차례로 변수에 대입되어 "수행할 문장1", "수행할 문장2" 등이 수행합니다.

for 변수 in 리스트(또는 튜플, 문자열):
    수행할 문장1
    수행할 문장2
    ...

예제

  • 기본적인 for문
    - range를 이용해 1,2,3번호를 waiting_no에 하나씩 대입합니다.
    for문에서는 range 함수를 자주 사용합니다.
for waiting_no in range(1,4): #1,2,3
	print("대기번호 : {0}".format(waiting_no))
    
> 대기번호 : 1
> 대기번호 : 2
> 대기번호 : 3
  • 튜플 for문
    - a 리스트의 요솟값이 튜플이기 때문에 각각의 요소가 자동으로 (first, last) 변수에 대입됩니다.
a = [(1,2), (3,4), (5,6)]

for (first, last) in a:
    print(first + last)
    
>3
>7
>11
  • for문 응용문제

    "총 5명의 학생이 시험을 보았는데 시험 점수가 60점이 넘으면 합격이고 그렇지 않으면 불합격입니다. 합격인지 불합격인지 결과를 보여 주세요.
    marks = [90, 25, 67, 45, 80]
    예) 1번 학생은 합격입니다.

marks = [90, 25, 67, 45, 80]
number = 0
for mark in marks :
    number = number + 1
    if mark >= 60:
        print("{0}번 한색은 합격입니다".format(number))
    else:
        print("{0}번 한색은 불합격입니다".format(number))

> 1번 한색은 합격입니다.
> 2번 한색은 불합격입니다.
> 3번 한색은 합격입니다.
> 4번 한색은 불합격입니다.
> 5번 한색은 합격입니다.

  • for문과 continue
    - for문 안의 문장을 수행하는 도중에 continue문을 만나면 for문의 처음으로 돌아가게 됩니다. 예제를 통해서 알아보겠습니다.
# marks2.py 
marks = [90, 25, 67, 45, 80]

number = 0 
for mark in marks: 
    number = number +1 
    if mark < 60:
        continue 
    print("%d번 학생 축하합니다. 합격입니다. " % number)
    
> 1번 학생 축하합니다. 합격입니다.
> 3번 학생 축하합니다. 합격입니다.
> 5번 학생 축하합니다. 합격입니다.

2. while

조건이 참인 동안 계속 반복합니다.

문법

while <조건문>:
    <수행할 문장1>
    <수행할 문장2>
    <수행할 문장3>
    ...

예제

  • 첫번째 예제
cumstomer = "토르"
index = 5
while index >= 1:
    print("{0},손님 커피가 준비되었습니다. {1} 번 남았어요.".format(cumstomer, index))
    index -= 1
    if index == 0:
        print("커피는 폐기처분 되었습니다")
        
> 토르,손님 커피가 준비되었습니다. 4 번 남았어요.
> 토르,손님 커피가 준비되었습니다. 3 번 남았어요.
> 토르,손님 커피가 준비되었습니다. 2 번 남았어요.
> 토르,손님 커피가 준비되었습니다. 1 번 남았어요.
> 커피는 폐기처분 되었습니다        
        
  • 두번째 예제

    while문의 조건문은 treeHit < 5입니다. 즉 treeHit가 5보다 작은 동안에 while문 안의 문장을 계속 수행합니다. whlie문 안의 문장을 보면 제일 먼저 treeHit = treeHit + 1로 treeHit 값이 계속 1씩 증가합니다. 그리고 나무를 treeHit번만큼 찍었음을 알리는 문장을 출력하고 treeHit가 5이 되면 "나무 넘어갑니다."라는 문장을 출력합니다. 그러고 나면 treeHit < 5 조건문이 거짓이 되므로 while문을 빠져나가게 됩니다

treeHit = 0
while treeHit < 5:
    treeHit = treeHit +1
    print("나무를 %d번 찍었습니다." % treeHit)
    if treeHit == 5:
        print("나무 넘어갑니다.")

> 나무를 1번 찍었습니다.
> 나무를 2번 찍었습니다.
> 나무를 3번 찍었습니다.
> 나무를 4번 찍었습니다.
> 나무를 5번 찍었습니다.
> 나무 넘어갑니다.

※ treeHit = treeHit + 1은 프로그래밍을 할 때 매우 자주 사용하는 기법입니다. treeHit 값을 1만큼씩 증가시킬 목적으로 사용하며, treeHit += 1 처럼 사용하기도 합니다.
반면 -, -=도 사용합니다.


  • while문의 continue
    -while문 안의 문장을 수행할 때 입력 조건을 검사해서 조건에 맞지 않으면 while문을 빠져나갑니다. 그런데 프로그래밍을 하다 보면 while문을 빠져나가지 않고 while문의 맨 처음(조건문)으로 다시 돌아가게 만들고 싶은 경우가 생기게 됩니다. 이때 사용하는 것이 바로 continue문입니다.

아래 예는 1부터 10까지의 숫자 중 홀수만 출력하는 예제 입니다. a가 10보다 작은 동안 a는 1만큼씩 계속 증가합니다. if a % 2 == 0(a를 2로 나누었을 때 나머지가 0인 경우)이 참이 되는 경우는 a가 짝수일 때입니다. 즉 a가 짝수이면 continue 문장을 수행합니다. 이 continue문은 while문의 맨 처음(조건문: a<10)으로 돌아가게 하는 명령어입니다. 따라서 위 예에서 a가 짝수이면 print(a)는 수행되지 않을 것입니다.

1~10까지 숫자 중 홀수만 출력하는 예제 입니다.
a = 0
while a < 10:
    a = a + 1
    if a % 2 == 0: continue
    print(a)

> 1
> 3
> 5
> 7
> 9

  • 무한루프
    - 무한 루프란 무한히 반복한다는 의미입니다. 우리가 사용하는 일반 프로그램 중에서 무한 루프 개념을 사용하지 않는 프로그램은 거의 없습니다. 그만큼 자주 사용한다는 뜻입니다.
while문의 조건문이 True이므로 항상 참이 됩니다. 따라서 while문 안에 있는 문장들은 무한하게 수행될 것입니다.

while True: 
    수행할 문장1 
    수행할 문장2
    ...
  • 예제
 while True:
    print("Ctrl+C를 눌러야 while문을 빠져나갈 수 있습니다.")
    
> Ctrl+C를 눌러야 while문을 빠져나갈 수 있습니다.
> Ctrl+C를 눌러야 while문을 빠져나갈 수 있습니다.
> Ctrl+C를 눌러야 while문을 빠져나갈 수 있습니다.
....

좋은 웹페이지 즐겨찾기