Python의 while문은 else 문이 추가될 수 있습니다.
if 문의 else 문과 유사합니다.
While문의 else 문도 while의 조건문이 False 이면 실행됩니다.
즉 while문이 종료되면 else 문이 실행된다는 뜻입니다.
while <조건문>:
<수행할 문장1>
<수행할 문장2>
<수행할 문장3>
...
<수행할 문장N>
else:
<while문이 종료된 후 수행할 문장1>
<while문이 종료된 후 수행할 문장2>
<while문이 종료된 후 수행할 문장3>
...
<while문이 종료된 후 수행할 문장N>
while문에 if문을 사용해 적절히 break와 continue를 사용하는 것이 좋습니다.
while의 조건은 true이지만
다른 요인으로 인해 while문이 종료하는 상황도 염두에 두어야할 때는
break를 써서 while문을 빠져나와야 합니다.
break를 사용하는 예제
coffee = 10
while True:
money = int(input("돈을 넣어 주세요: "))
if money == 300:
print("커피를 줍니다.")
coffee = coffee -1
elif money > 300:
print("거스름돈 %d를 주고 커피를 줍니다." % (money -300))
coffee = coffee -1
else:
print("돈을 다시 돌려주고 커피를 주지 않습니다.")
print("남은 커피의 양은 %d개 입니다." % coffee)
if coffee == 0:
print("커피가 다 떨어졌습니다. 판매를 중지 합니다.")
break
또한, while문을 빠져나가지 않고 해당 조건만 건너뛰고 싶을 때는 continue를 사용합니다. continue는 while문의 맨 첫줄로 돌아가게 해줍니다. 예를 들어, 화면에 1부터 10까지 출력하는데 5인 경우에만 출력하지 않는 코드는 다음과 같습니다.
continue를 사용하는 예제
num = 0
>>> while num < 10:
num += 1
if num == 5:
continue
print(num)
1
2
3
4
6
7
8
9
10
for문의 문법은 다음과 같습니다.
for 요소 in list(or tuple, string):
여기서 요소는 list(or tuple, string)의 요소를 뜻합니다.
간단한 예제를 들어보겠습니다.
a = [1,2,3,4,5]
for num in a:
print(num)
>>>1
>>>2
>>>3
>>>4
>>>5
comprehension의 사전적 의미는 이해
, 포괄
등이 있습니다.
저희가 주목해야할 의미는 포괄
입니다.
list에 반복저이고 특정한 조건을 만족하는 요소를 포함해야하는 경우, list comprehension을 사용하면 편하게 구현할 수 있습니다.
기본 문법은 다음과 같습니다.
[표현식 for 항목 in 반복가능객체 if 조건문]
예를 들어, 숫자들이 담겨있는 list를 input으로 받아 짝수만 남겨 return해주는 함수를 구현할 때, list comprehension을 사용하지 않은 코드와 사용한 코드를 보여드리겠습니다.
list comprehension을 사용하지 않는 경우 (1)
def remove_odd_numbers(numbers):
for num in numbers[:]:
if num % 2 == 1:
numbers.remove(num)
return numbers
list comprehension을 사용한 경우 (2)
def remove_odd_numbers(numbers):
return [num for num in numbers if num % 2 == 0]
(1)번이 (2)번보다 코드도 훨씬 길고
홀수일 때마다 요소를 지워주는 로직이다 보니 slicing도 매번 해줘야 합니다.
반면에, (2)번의 경우, 코드도 짧고 직관적인 로직을 사용해서 구현해주었습니다.