TIL : 왕초보 파이썬 -2

Perfume·2020년 11월 29일
0
post-thumbnail

지난 이야기 :

친구 Y의 권유로 매주 토요일 저녁 10시에 파이썬을 공부하기로 한 향수. 파이썬의 배열 메서드와 if문, for문을 이용한 피라미드 만들기 등을 공부하는데...
(https://velog.io/@perfumellim/TIL-Python-%EB%A7%9B%EB%B3%B4%EA%B8%B0)

지난 이야기에서 봤다시피 첫 번째 시간에는 파이썬의 기초 중 기초를 공부했다. 변수를 선언하는 법, if문과 for문, 그리고 간단한 배열 메서드까지.

이번 주에는 for문(지난 주보다 응용편)과 while문, 그리고 함수에 대해서 배웠다. 언제나 내 최고의 스승인 Y로부터!

while문

맥도날드가 극단적인 정책 변화를 꾀했다. 5번 이상 불렀는데 고객이 오지 않으면 햄버거를 바로 폐기처분 하겠다고 한다. 이 정책을 while문으로 작성해보자.

식을 다음과 같이 작성해보았다.

customer = "향수"
index = 5
while index >= 1:
    print("{0}님 빅맥 세트 나왔습니다. {1}번 남았어요.".format(customer, index))
    index -= 1
if index == 0:
    print("햄버거가 폐기처분 되었습니다")

이 식을 실행시키면

짠 ! 원하는 결과가 도출되었다.

무한루프 탈출하기 - control C

다음과 같은 while문을 실행해보자.

customer = "향수"
index = 1
while True:
    print("{0}님 아이스 아메리카노 한 잔 나왔습니다. 호출 {1}번째".format(customer, index))
    index += 1

아래와 같이 무시무시한 일이 일어났을 것이다. 실행버튼을 누르자마자..

while문이 끝나는 지점을 설정해두지 않았기 때문에 무한으로 루프를 돌게 된 것이다. 이렇게 미친 듯이 무한루프를 돌고 있는 컴퓨터를 멈추게 하기 위헤선 터미널에서 컨트롤 + C를 누르면 된다.

여기서 두 가지를 배울 수 있다.

  1. while문이 멈출 조건을 정해둬야 한다는 것
  2. 혹시나 무한루프가 돌면 컨트롤 c로 탈출할 수 있다는 것

그러나 2번은 몰라도 될 만큼 애초에 로직을 짤 때부터 무한루프가 발생하지 않도록 조심해야할 것 같다.

for문을 while문으로

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씩 커진다는 것이다.

while문을 for문으로

 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문은 각각 언제 쓰는데?

for문

배열을 몇 번 반복해야 하는지 명확하게 알고 있을 때 사용한다.
배열과 함께 주로 사용한다.

while

무한루프나 특정 조건을 만족할 때까지 반복해야하는 경우 사용한다.
주로 파일을 읽고 쓸 때 많이 사용한다.

profile
공부하는 즐거움

0개의 댓글