Python-10.Loop

안녕하세요 묵호입니다.
이번 글에서는 반복문에 대해 알아보도록 하겠습니다.

반복문

지금까지 알고 있는 것들로 구구단을 출력하는 함수를 짜보겠습니다.

def calcGugudan(dan):
    print(dan, " * ", 1, " = ", dan * 1)
    print(dan, " * ", 2, " = ", dan * 2)
    print(dan, " * ", 3, " = ", dan * 3)
    print(dan, " * ", 4, " = ", dan * 4)
    print(dan, " * ", 5, " = ", dan * 5)
    print(dan, " * ", 6, " = ", dan * 6)
    print(dan, " * ", 7, " = ", dan * 7)
    print(dan, " * ", 8, " = ", dan * 8)
    print(dan, " * ", 9, " = ", dan * 9)

dan에 숫자를 입력하면 그것에 맞는 구구단을 출력해주는 함수입니다. 그런데 뭔가 귀찮지 않나요? 반복되는 구절을 9번이나 반복했습니다. 구절들은 숫자가 1에서 9까지 +1되는 규칙을 가지고 있습니다.
반복문은 일정 규칙을 가지면서 여러 번 반복하는 경우에 사용합니다.

for문

방금 짠 calcGugudan을 for문을 사용하는 함수로 바꿔보겠습니다.

def calcGugudan(dan):
    for i in range(1, 10):
        print(dan, " * ", i, " = ", dan * i)

for 구문 뒤에 i in range(1, 10) 구문은 1 이상 10 미만의 범위 내에서 순차적으로 i를 저장하겠다라는 의미입니다. 이전에 in 문법과 유사합니다. in 뒤에는 리스트 등도 올 수 있습니다.

def calcGugudan(dan):
    for i in [1, 2, 3, 4, 5, 6, 7, 8, 9]:
        print(dan, " * ", i, " = ", dan * i)

range() 함수를 보겠습니다.

  • range(limit): 0에서 limit-1까지를, 1씩 증가하는 형태의 값으로 반환합니다.
  • range(start, end): start에서 end-1까지를, 1씩 증가하는 형태의 값으로 반환합니다.
  • range(start, end, step): start에서 end-1까지를, step씩 증가하거나 감소하는 값으로 반환합니다.
for i in range(3):
    print(i, end = ' ') # 0 1 2
for i in range(1, 3):
    print(i, end = ' ') # 1 2
for i in range(1, 6, 2):
    print(i, end = ' ') # 1 3 5
for i in range(5, 0, -2):
    print(i, end = ' ') # 5 3 1

for문 안에 for문을 작성할 수 있습니다. 이를 통해 두 개의 for문 만으로 구구단을 작성해보겠습니다.

for i in range(1, 10):
    for j in range(1, 10):
        print(i, " * ", j, " = ", i * j)

while문

while문은 for 문과 비슷합니다. 같은 코드를 for문에서 while문을 사용한 코드로 바꿔보겠습니다.

i = 1
j = 1
while i < 10:
    while j < 10:
        print(i, " * ", j, " = ", i * j)
        j += 1 # 'j = j + 1'과 같은 구문입니다.
    j = 1 # j를 1로 초기화
    i += 1

break와 continue

반복문이 진행하는 도중 강제로 탈출하는 break와 건너뛰는 continue에 대해 알아보겠습니다.
반복문은 주어진 조건문이 True일 때 반복문 안의 내용을 반복적으로 수행합니다. 하지만 특정 조건일 때 반복문을 멈추고 싶다면 어떻게 해야할까요?
예를 들어보겠습니다. 편의점에 포카리스웨트 음료수가 5개 있습니다. 오늘따라 포카리스웨트를 1개씩 사가는 손님들이 많습니다. 그런데 점장님이 자신이 포카리를 많이 마시고 싶다며 2병이 남으면 판매를 종료하라고 합니다. 이 상황을 반복문으로 만들어 보겠습니다.

pocari = 5
while pocari > 0:
    if pocari == 2:
        break
    pocari -= 1
    print("판매완료. 남은 갯수 " + str(pocari) + "개")

# 판매완료. 남은 갯수 4개
# 판매완료. 남은 갯수 3개
# 판매완료. 남은 갯수 2개

포카리가 2개가 남게 되면, if문이 True가 되고, break를 만나 while문을 탈출하게 됩니다. break문은 이와 같이 특정 조건일 때 반복문을 탈출할 때 쓰입니다. 무한루프 반복문의 실행을 멈출 때도 사용하죠. i를 0부터 1씩 증가시켜 출력하는 무한루프 반복문에서 i가 5일 때 멈추는 코드를 짜보겠습니다.

i = 0
while True: # 이 형태가 무한루프입니다. 계속 반복합니다.
    if i == 5:
        break
    i += 1
    print(i, end=' ')
# 1 2 3 4

다음은 continue입니다. 반복문을 수행하는 도중 특정 조건에서는 작업을 skip 하고 싶을 때 사용하는 것입니다. 예를 들어, 1부터 10까지의 숫자 중 홀수만 출력하는 경우입니다.

for i in range(1, 11):
    if i % 2 == 0:
        continue
    print(i, end=' ')
# 1 3 5 7 9

이 코드에서는 i가 짝수인 경우, if문이 True가 되어 continue를 수행합니다. 이 때 continue 아래 있는 코드는 전부 SKIP하고, 다음 조건으로 가 반복문을 반복합니다.



다음 시간에는 파일 입출력에 대해 알아보겠습니다.
그럼.. 바위^^