[파이썬 코딩 도장] Unit20 - Unit21

Unit 20.FizzBuzz 문제

FizzBuzz란?

1에서 100까지 출력하는 프로그램. 단, 3의 배수일 경우 Fizz 출력, 5의 배수일 경우 Buzz 출력, 3과 5의 공배수일 경우 FizzBuzz 를 출력하는 프로그램

1. 1부터 100까지 100번 반복하면서 print 변수로 값 출력하기

주의! : range에서 반복되는 마지막 숫자는 끝나는 숫자보다 1이 더 작으므로 101 지정하기

for i in range(1, 101):
  print(i)
1
2
... (생략)
99
100

2. 3의 배수와 5의 배수일 때 숫자 대신 Fizz, Buzz 입력, 공배수일 때 FizzBuzz 입력

for 반복문에서 i를 3으로 나눴을 때 0이면 3의 배수, 5로 나눴을 때 나머지가 0이면 5의 배수

for i in range(1, 101):
    if i % 3 == 0 and i % 5 == 0: #논리연산자를 사용하지 않으려면 if i % 15 == 0: 
        print('FizzBuzz')
    if i % 3 == 0:
        print('Fizz')
    elif i % 5 == 0:
        print('Buzz')
    else:
        print(i)
1
2
Fizz
... (생략)
FizzBuzz
91
92
Fizz
... (생략)
98
Fizz
Buzz

3. 단축한 코드로 FizzBuzz 출력하기

for i in range(1, 101):
    print('Fizz' * (i % 3 == 0) + 'Buzz' * (i % 5 == 0) or i)
1
2
Fizz
... (생략)
FizzBuzz
91
92
Fizz
... (생략)
98
Fizz
Buzz

Unit 21.터틀 그래픽스로 그림 그리기

Turtle graphics란?

터틀은 어린이 및 초보자가 파이썬을 쉽게 배울 수 있도록 만든 모듈. 거북이가 기어가는 모양대로 그림을 그린다고 해서 터틀이라고 함.

1. 사각형 그리기

import turtle as t
t.shape('turtle')
t.forward(100)      #100픽셀만큼 앞으로 이동
t.right(90)         #오른쪽으로 90도 회전
t.forward(100)
t.right(90)
t.forward(100)
t.right(90)
t.forward(100)

  • turtle module 다른 기능
    • 앞으로 이동 : forward, fd
    • 뒤로 이동 : backward, bk, back
    • 왼쪽으로 회전 : left, lt
    • 오른쪽으로 회전 : right, rt

참고 | 실행하자마자 터틀 창 사라질 때

IDLE가 아닌 PyCharm 등의 파이썬 개발 도구를 사용한다면 터틀 창이 유지되지 않고 바로 사라질 수도 있음. 이때는 스크립트 파일 마지막 부분에 다음 코드 입력.
t.mainloop()
mainloop는 터틀 창이 종료될 때까지 마우스, 키보드 입력을 대기

2. 반복문 사용해 사각형 그리기

import turtle as t
t.shape('turtle')
for i in range(4):
    t.forward(100)
    t.right(90)

3. 오각형 그리기

import turtle as t
 
t.shape('turtle')
for i in range(5):      # 오각형이므로 5번 반복
    t.forward(100)
    t.right(360 / 5)    # 360을 5로 나누어서 외각을 구함

4. 다각형 그리기

import turtle as t
 
n = int(input())        # 사용자의 입력을 받음
t.shape('turtle')
for i in range(n):      # n번 반복
    t.forward(100)
    t.right(360 / n)    # 360을 n으로 나누어서 외각을 구함

5. 다각형에 색칠하기

import turtle as t
 
n = 6    # 육각형
t.shape('turtle')
t.color('red')          # 펜의 색을 빨간색으로 설정
t.begin_fill()          # 색칠할 영역 시작
for i in range(n):      # n번 반복
    t.forward(100)
    t.right(360 / n)    # 360을 n으로 나누어서 외각을 구함
t.end_fill()            # 색칠할 영역 끝


참고 | color에 색깔 지정하기

color에 색깔을 지정할 때 'red', 'green', 'blue', 'yellow', 'purple', 'brown', 'gray' 등 영어로 색 이름을 지정. 하지만 색 이름만으로는 다양한 색상을 표현하기가 힘듦. 이때는 웹 색상(web color)을 사용.
웹 색상은 #으로 시작하며 빨강(R), 초록(G), 파랑(B)에 해당하는 두 자리 16진수 세 쌍으로 구성.
#000000: 검정
#FF0000: 빨강
#00FF00: 초록
#0000FF: 파랑
색상의 범위는 00부터 FF까지 사용할 수 있으며 빨강, 초록, 파랑을 조합해서 색상을 만듦.
t.color('#FF69B4') #핫핑크

6. 복잡한 도형 그리기

import turtle as t
t.shape('turtle')
t.circle(120)

7. 원 반복해서 그리기

import turtle as t
 
n = 60    # 원을 60번 그림
t.shape('turtle')
t.speed('fastest')      # 거북이 속도를 가장 빠르게 설정
for i in range(n):
    t.circle(120)       # 반지름이 120인 원을 그림
    t.right(360 / n)    # 오른쪽으로 6도 회전

8. 선으로 복잡한 무늬 그리기

import turtle as t
 
t.shape('turtle')
t.speed('fastest')      # 거북이 속도를 가장 빠르게 설정
for i in range(300):    # 300번 반복
    t.forward(i)        # i만큼 앞으로 이동. 반복할 때마다 선이 길어짐
    t.right(91)         # 오른쪽으로 91도 회전


참고 | 터틀 모양 설정하기

터틀의 shape에는 'arrow', 'turtle', 'circle', 'square', 'triangle', 'classic' 등을 지정하여 여러 가지 터틀 모양을 사용 가능. 특히, t.shape()와 같이 shape를 그대로 호출하면 현재 모양을 알아낼 수 있음.

>> t.shape('arrow')    # 화살표 모양 사용
>> t.shape()           # 현재 모양 알아내기
'arrow'

좋은 웹페이지 즐겨찾기