For vs while

아 갑자기 do while loop가 생각났음… (아련) 뭐가 아련이여

기본

아무튼, for와 while은 python에 있는 반복문인데 맥락이 좀 다르다. 예를 들어거 내가 10페이지짜리 논문을 읽는다, 그러면

  • For: 1페이지부터 10페이지까지 논문을 읽는다
  • While: 읽은 페이지가 10이 될 때까지 논문을 읽는다

대충 이런 맥락. 사실 여기까지 얘기하면 별로 안 와닿을 수도 있으나…

이런 차이가 있다. 둘 다 3^1~1^10까지 출력하는 코드인데(사실 저렇게 안하고 프린트문 줘도 됨)

  • For: 1부터 10까지 3에 제곱해
  • While: j가 있는데 이게 11보다 작을 동안 3에 제곱하고 하나씩 더해

이런 식으로 돌아간다. For문은 범위를 주고 반복하는 반복문이고 While은 어떤 조건을 주고 반복하는 조건부 반복문. 그래서 For는 범위가 끝나면 반복문이 끝나고 While은 조건을 만족하면 반복문이 끝난다.

참고로 베이직의 Do while loop와 비슷한건 While쪽이다.

For ~ in range

for i in range(5):
    print(i)

0부터 4까지 출력하는 코드. range는 별도의 지시가 없으면 시작이 0이고, 0부터 ~미만이라 5 미만인 4까지 나온다.

a=list(range(1,11))
for i in a: 
    print(i*i)

이미 리스트가 존재할 때는 이런 식으로 쓰기도 하고

a="힘세고 강한 아침!"
for i in a: 
    print(i)

어째서인지는 모르겠으나 문자열에도 통한다.

While True

무한루프.

i=1
while True: 
    i += 1
    if i > 10:
        break
print(i)

이게 While True를 적용한 간단한 코드인데, 밑에 있는 break는 뭐냐… While True는 무한루프라 사용자가 멈추지 않는 이상 계속 돌아간다. 그러면 ctrl+c를 누르거나 프로세스를 죽이지 않는 이상 계에에에에에에에에속 돌아간다 이 얘기. 저기 있는 if문과 break는 i에 1을 계에에에에속 더하다가 i가 10보다 크면 루프문을 빠져나와라 이 얘기다. 즉, while True는 break 없으면 계에에에에에에에에속 돌아간다.