핵심정리

반복할 횟수를 지정하여 반복하기

for 반복문은 반복할 횟수를 지정하여 반복할 수 있습니다. range에 반복할 횟수를 지정하고 앞에 in과 변수를 지정합니다.

for 변수 in range(횟수):
    반복할 코드

반복할 횟수가 정해져 있지 않을 때 반복하기

while 반복문은 반복 횟수가 정해져 있지 않을 때, 논리 조건에 따라 반복 여부를 결정할 때 사용합니다. 조건식이 만족하면 계속 반복하고, 만족하지 않으면 반복을 끝냅니다(예를 들어 데이터를 다 읽을 때까지 반복하는 경우).

초기식
while 조건식:
    반복할 코드
    조건식의 결과에 영향을 주는 코드(변화식)

반복문 끝내기

반복문에서 break를 사용하면 반복문을 끝낼 수 있습니다.

while 조건식1:
    if 조건식2:
        break    # 반복문을 끝냄

반복문의 코드 건너뛰기

반복문에서 continue를 사용하면 반복문의 일부 코드를 건너뛸 수 있습니다. 단, 반복문을 끝내지 않고 계속 반복합니다.

while 조건식1:
    if 조건식2:
        continue    # 아래 코드를 건너뛴 뒤 계속 반복함
    코드

중첩 루프

반복문 안에 반복문이 들어 있는 형태를 중첩 루프라고 하며 루프 인덱스 변수는 i부터 순서대로 짓습니다.

  • 예) i, j, k

중첩 루프는 주로 가로×세로 형태로 된 2차원 평면을 다룰 때 사용합니다

for i in range(10):        # 바깥쪽 루프
    for j in range(10):    # 안쪽 루프
        pass

반복문과 들여쓰기

for, while 다음에 오는 코드는 반드시 들여쓰기를 해야 하고, 깊이가 같아야 합니다.


for i in range(10):

    print(i)    # 올바른 코드

 

 

for i in range(10):

print(i)        # 잘못된 코드

while i < 10:

    print(i)     # 올바른 코드

    i += 1       # 올바른 코드

 

while i < 10:

    print(i)         # 잘못된 코드

        i += 1       # 잘못된 코드

FizzBuzz 문제의 의도

FizzBuzz 문제는 겉으로 보기에는 if 조건문과 나머지 연산자를 사용하는 방법을 묻는 것 같지만 실제로는 요구사항을 정확히 파악하여 구현했는지를 평가하는 문제입니다.

가장 많이 실수하는 부분은 3과 5의 공배수인데도 3의 배수로만 처리한다거나 5의 배수로만 처리하고 넘어가는 것입니다. 제시된 요구사항을 순서대로 if, elif, else로 만들다 보면 이런 실수를 하게 되죠. 따라서 문제의 요구사항을 정확히 파악하여 중요한 내용이 무엇인지 확인하고, 놓친 부분은 없는지 살펴봐야 합니다(여기서는 공배수 처리 부분이겠죠?).

터틀 그래픽스

turtle 모듈은 펜으로 그림을 그리는 모듈입니다.

메서드

설명

메서드

설명

shape('모양')

터틀 모양 지정(arrow, turtle, circle, square, triangle, classic).

mainloop()

터틀 창 유지

forward(거리)

fd(거리)

앞으로 이동

backward(거리)

bk(거리)

back(거리)

뒤로 이동

left(각도)

lt(각도)

왼쪽으로 회전

right(각도)

rt(각도)

오른쪽으로 회전

color('색')

팬의 색 지정

circle(반지름)

원 그리기

begin_fill()

색칠할 영역 시작

end_fill()

색칠할 영역 끝

speed('속도')

거북이 속도 설정

 

 

표 21-1 터틀 메서드