지난 이야기 :
친구 Y의 권유로 매주 토요일 저녁 10시에 파이썬을 공부하기로 한 향수. 파이썬의 배열 메서드와 if문, for문을 이용한 피라미드 만들기 등을 공부하는데...
(https://velog.io/@perfumellim/TIL-Python-%EB%A7%9B%EB%B3%B4%EA%B8%B0)
지난 이야기에서 봤다시피 첫 번째 시간에는 파이썬의 기초 중 기초를 공부했다. 변수를 선언하는 법, if문과 for문, 그리고 간단한 배열 메서드까지.
이번 주에는 for문(지난 주보다 응용편)과 while문, 그리고 함수에 대해서 배웠다. 언제나 내 최고의 스승인 Y로부터!
맥도날드가 극단적인 정책 변화를 꾀했다. 5번 이상 불렀는데 고객이 오지 않으면 햄버거를 바로 폐기처분 하겠다고 한다. 이 정책을 while문으로 작성해보자.
식을 다음과 같이 작성해보았다.
customer = "향수"
index = 5
while index >= 1:
print("{0}님 빅맥 세트 나왔습니다. {1}번 남았어요.".format(customer, index))
index -= 1
if index == 0:
print("햄버거가 폐기처분 되었습니다")
이 식을 실행시키면
짠 ! 원하는 결과가 도출되었다.
다음과 같은 while문을 실행해보자.
customer = "향수"
index = 1
while True:
print("{0}님 아이스 아메리카노 한 잔 나왔습니다. 호출 {1}번째".format(customer, index))
index += 1
아래와 같이 무시무시한 일이 일어났을 것이다. 실행버튼을 누르자마자..
while문이 끝나는 지점을 설정해두지 않았기 때문에 무한으로 루프를 돌게 된 것이다. 이렇게 미친 듯이 무한루프를 돌고 있는 컴퓨터를 멈추게 하기 위헤선 터미널에서 컨트롤 + C를 누르면 된다.
여기서 두 가지를 배울 수 있다.
그러나 2번은 몰라도 될 만큼 애초에 로직을 짤 때부터 무한루프가 발생하지 않도록 조심해야할 것 같다.
for waiting_no in range(5):
print("대기번호{0}".format(waiting_no+1))
위의 for문을 while문으로 바꿔보자. 아마 다음과 같이 적을 수 있을 것이다.
waiting_no = 0
while waiting_no < 5:
print("대기번호: {0}".format(waiting_no+1))
waiting_no += 1
한 줄 한 줄 설명해보자.
일단 for문에서는 waiting_no라는 변수를 굳이 선언해주지 않았다. 그냥 for문 안에 넣는 것만으로 변수가 선언된 것 같은 효과를 얻기 때문이다. 하지만 while문은 반드시 그전에 변수를 선언해야 한다.
또한 for문은 따로 적지 않아도 0부터 1씩 커지며 순서대로 루프를 도는데
while문은 꼭 적어줘야 한다. 하단의 waiting_no +=1의 의미가 바로 1씩 커진다는 것이다.
customer = ["향수"]
person = "Unknown"
while person != customer:
print("{0}님 아이스 아메리카노 한 잔 나왔습니다".format(customer))
person = input("성함이 어떻게 되세요?")
위와 같은 while문을 for문으로 바꿔보자. 다음처럼 쓸 수 있다.
customer = ["향수"]
person = "Unknown"
for person in customer:
print("{0}님 아이스 아메리카노 한 잔 나왔습니다".format(customer[0]))
person = input("성함이 어떻게 되세요?")
for문
배열을 몇 번 반복해야 하는지 명확하게 알고 있을 때 사용한다.
배열과 함께 주로 사용한다.
while
무한루프나 특정 조건을 만족할 때까지 반복해야하는 경우 사용한다.
주로 파일을 읽고 쓸 때 많이 사용한다.