티스토리 뷰
인간보다는 기계에 아주 잘맞는 행동 "반복"
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 문
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
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를 적절히 사용하면 쓸데없는 반복 진행을 피할 수 있습니다.
리스트 안에서 반복문과 조건문 실행하기
예를 들어볼까요? 맨 처음에 [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 |