# 파이썬 코드 구조
- 라인 유지하기: \
## while 문
- 중단하기: break
- 건너뛰기: continue
### break 확인하기: else
while 문이 모두 실행되었지만 발견하지 못했을 경우 else가 실행됨
```python
numbers = [1, 3, 5]
position = 0
while position < len(numbers):
number = numbers[position]
if number % 2 == 0:
print('Found even number', number)
break
position += 1
else: # break가 호출되지 않음
print('No even number found')
```
## 순회하기: for
문자열, 튜플, 딕셔너리, 셋은 순회가능한(iterable) 객체이다.
```python
rabbits = ['Flopsy', 'Mopsy', 'Cottontail', 'Peter']
for rabbit in rabbits:
print(rabbit)
```
```python
word = 'cat'
for letter in word:
print(letter)
```
딕셔너리의 순회는 키를 반환한다.
값을 순회하려면 딕셔너리의 values() 함수를 사용한다.
```python
accusation = {'room': 'ballroom', 'weapon': 'lead pipe', 'person': 'Col, Mustard'}
for card in accusation: # 혹은 for card in accusation.keys()
print(card)
...
room
weapon
person
```
딕셔너리에서 키와 값을 모두 반환하기 위해서는 items() 함수를 사용한다.
```python
for item in accusation.items():
print(item)
```
튜플의 키는 card에, 값은 contents에 할당할 수 있다.
```python
for card, contents in accusation.items():
print('Card', card, 'has the contents', contents)
```
### break, continue
for 문의 break, continue 는 while문의 break와 같이 동작한다.
### break 확인하기: else
for 문에서 break 문이 호출되지 않으면 else 문이 실행된다.
### 여러 시퀀스 순회하기: zip()
여러 시퀀스를 병렬로 순회할 수 있다. 시퀀스 중 가장 짧은 시퀀스가 완료되면 zip()은 멈춘다.
```python
days = ['Monday', 'Tueseday', 'Wednesday']
fruits = ['banana', 'orange', 'peach']
drinks = ['coffee', 'tea', 'beer']
desserts = ['tiramisu', 'ice cream', 'pie', 'pudding']
for day, fruit, drink, dessert in zip(days, fruuts, drinks, desserts):
print(day, ": drink", drink, "- eat", fruit, "- enjoy", dessert)
```
또한 zip() 함수로 여러 시퀀스를 순회하며, 튜플이나 딕셔너리 등을 만들 수 있다.
```python
list( zip(days, fruits) )
dict( zip(days, fruits) )
```
### 숫자 시퀀스 생성하기: range()
*range(start, stop, step)* 는 특정 범위 내에서 숫자 스트림을 반환한다.
```python
for x in range(0, 3):
print(x)
```
```python
list( range(0, 3) )
```
거꾸로 진행하는 2에서 0의 숫자 시퀀스.
```python
for x in range(-2, -1, -1):
print(x)
```