티스토리 뷰

인간보다는 기계에 아주 잘맞는 행동 "반복"

무언가를 계속 반복한다는 것은 아주 힘든 일입니다. 많은 사람들이 같은 행동만 반복하는 것을 참을 수 없어합니다. 그런 인간들과는 다르게 기계는 반복적인 행동을 아주 빠르게, 잘 합니다. 값을 찾기 위해 같은 행동을 몇 천번 몇 만번까지고 순식간에 할 수 있습니다.  이번 포스팅은 인간보다 기계가 더 뛰어난 반복문에 대해서 다뤄보도록 하겠습니다.

for 문

[1, 2, 3, 4, 5]라는 리스트가 있을 때 이 리스트에 있는 값을 3씩 증가해서 새로운 리스트를 만들려고 합니다. 이렇게 반복되는 행동은 반복문을 가지고 아주 쉽게 할 수 있습니다.


li = [1, 2, 3, 4, 5]
li2 = []
for item in li:
    item = item + 3
    li2.append(item)


li2의 값을 확인해보면 [4, 5, 6, 7, 8]인 것을 알 수 있습니다. 당연히 배열의 길이가 훨씬 더 길어도 아주 쉽게 반복할 수 있습니다. 그렇다면 저런 단순한 것들만 반복할 수 있을까요? 조건문을 활용하면 좀 더 "똑똑한" 반복도 할 수 있습니다. li라는 리스트 값에서 홀수만 3을 더하려면 어떻게 해야할까요?


li = [1, 2, 3, 4, 5]
li2 = []
for item in li:
    if item % 2 == 1:
        item = item + 3
    li2.append(item)
#li2는 [4, 2, 6, 4, 8]


반복문 안에 조건문을 넣어서 홀수 값에만 3을 더하고 새로운 리스트에 추가했습니다.


반복문의 in 뒤에는 리스트, 튜플, 문자열, range()함수가 자주 옵니다.

while 문

while문은 문법이 약간 다릅니다. 초기화를 먼저 시켜준 다음 조건이 나오고, 반복할 구문이 나옵니다.

monster_hp = 30 sword_damage = 10 while monster_hp > 0: monster_hp = monster_hp - sword_damage print('몬스터의 피가 {} 남았습니다.'.format(monster_hp)) if monster_hp == 0: print("몬스터가 죽었습니다.")


rpg 게임을 한다고 가정해봅시다. 체력이 30인 몬스터로 데미지가 10인 검으로 잡아야 합니다. 위의 소스코드를 실행시키면 몬스터의 체력이 줄어들다가 0이 되었을 때 몬스터가 죽습니다. while문을 사용하실 때는 조건이 참에서 거짓으로 자연스럽게 넘어가도록 코드를 구성해야 합니다. 아님 거짓이 되는 조건이 없으면 항상 참이 될 것이고 이는 무한루프를 일으킵니다.


for문은 리스트 등에서 값을 꺼낼 때 while문은 정해진 길이가 없을 때 자주 사용합니다.

반복문에서 벗어나는 방법인 break와 continue

0에서 10까지의 숫자중에 7을 만났을 때 반복문을 중단하고 싶다면 어떻게 해야할까요?

for num in range(10):
    if num == 7:
        break
    print(num)


break구문은 반복문을 빠져나갑니다. 위의 소스코드를 실행하면 0~6까지의 숫자만 출력됩니다. 그렇다면 해당 반복만 중단시키고, 이어서 다음 반복문을 실행하려면 어떻게 해야할까요?


for num in range(10):
    if num == 7:
        continue
    print(num)


continue 구문은 해당 반복만 중단시키고 다음 반복을 실행합니다. 즉 위의 소스코드를 실행하면 0~9까지의 숫자중 7만 빼고 다 출력이 됩니다.


break와 continue를 적절히 사용하면 쓸데없는 반복 진행을 피할 수 있습니다.

리스트 안에서 반복문과 조건문 실행하기

파이썬은 자유로운 언어이기 때문에 리스트 안에서 반복문과 조건문을 실행할 수 있습니다.

[표현식 for 항목 in 반복가능한 객체 if 조건]처럼 정의하면 됩니다.


예를 들어볼까요? 맨 처음에 [1, 2, 3, 4, 5]라는 리스트 안에 있는 값들을 3씩 더한 예제를 위에 처럼 표현해 보도록하겠습니다.


li = [1, 2, 3, 4, 5]
li2 = [item + 3 for item in li]
li3 = [item + 3 for item in li if item % 2 == 1]


li2에는 반복문만 들어있고, li3에는 조건문까지 들어있습니다. 리스트 안에서 반복문과 조건문 등을 포함시킬 때 조건문은 필터역할을 합니다. 즉 li3 리스트에는 조건에 부합하는 홀수만 3이 더해져서 들어가게 됩니다.



조건문과 반복문은 프로그래밍에서 아주 중요합니다. 꼭 반복해서 익혀주세요.



공감은 제작자에게 큰 힘이 됩니다.

'Backend-dev > python' 카테고리의 다른 글

파이썬의 유효범위(scope)  (0) 2018.04.07
파이썬의 함수  (1) 2018.04.06
파이썬의 조건문(if)  (1) 2018.04.02
파이썬의 자료형 set 알아보기  (0) 2018.03.30
파이썬 자료형 딕셔너리 알아보기  (0) 2018.03.30
댓글