Unit 20-21. Fizz-buzz, 터틀그래픽스

Joy·2020년 3월 2일
0

FizzBuzz

간단한 프로그래밍 문제

1에서 100까지 출력
3의 배수는 Fizz 출력
5의 배수는 Buzz 출력
3과 5의 공배수는 FizzBuzz 출력

for i in range(1, 101):      # 1부터 100까지 100번 반복
    if i % 15 == 0:          # 15의 배수(3과 5의 공배수)일 때
        print('FizzBuzz')    # FizzBuzz 출력
    elif i % 3 == 0:         # 3의 배수일 때
        print('Fizz')        # Fizz 출력
    elif i % 5 == 0:         # 5의 배수일 때
        print('Buzz')        # Buzz 출력
    else:
        print(i)             # 아무것도 해당되지 않을 때 숫자 출력

코드 단축하기

for i in range(1, 101):
    print('Fizz' * (i % 3 == 0) + 'Buzz' * (i % 5 == 0) or i)
    # 문자열 곱셈과 덧셈을 이용하여 print 안에서 처리

파이썬에서 문자열을 곱하고 더할 수 있는 성질 활용:

>>> 'Fizz' + 'Buzz'
'FizzBuzz'
>>> 'Fizz' * True
'Fizz'
>>> 'Fizz' * False
''

'Fizz' * (i % 3 == 0)

 i가 3의 배수이면 i % 3 == 0은 True이므로 'Fizz'가 출력되고, 3의 배수가 아니면 False이므로 'Fizz'가 출력되지 않음

'Fizz' (i % 3 == 0) + 'Buzz' (i % 5 == 0)

3과 5의 공배수이면 'Fizz' * True + 'Buzz' * True가 되므로 'Fizz' + 'Buzz'로 'FizzBuzz'를 출력. 만약 한 쪽이 만족하지 않으면 덧셈할 문자열이 없으므로 'Fizz'나 'Buzz'만 출력
print('Fizz' * (i % 3 == 0) + 'Buzz' * (i % 5 == 0) or i)

3 또는 5의 배수가 아닐 때는 'Fizz' False + 'Buzz' False가 되고 결과는 빈 문자열 ''이 되는데, 이때는 or 연산자를 사용. 빈 문자열은 False로 취급하고, i는 항상 1 이상의 숫자이므로 or로 연산하면 i만 남게 되어 숫자가 그대로 출력

퀴즈: 5와 7의 배수, 공배수 처리하기

표준 입력으로 정수 두 개가 입력됩니다(첫 번째 입력 값의 범위는 1~1000, 두 번째 입력 값의 범위는 10~1000이며 첫 번째 입력 값은 두 번째 입력 값보다 항상 작습니다). 첫 번째 정수부터 두 번째 정수까지 숫자를 출력하면서 5의 배수일 때는 'Fizz', 7의 배수일 때는 'Buzz', 5와 7의 공배수일 때는 'FizzBuzz'를 출력하는 프로그램을 만드세요.

x, y = map(int, input().split())
for i in range(x,y+1):
    if i % 5 == 0 and i % 7 == 0:
        print("FizzBuzz")
    elif i % 5 == 0:
        print("Fizz")
    elif i % 7 == 0:
        print("Buzz")
    else:
        print(i)

21. 터틀 그래픽스

터틀 그래픽스(Turtle graphics) 모듈

앞으로 이동: forward, fd
뒤로 이동: backward, bk, back
왼쪽으로 회전: left, lt
오른쪽으로 회전: right, rt

사각형 그리기

import turtle as t
t.shape('turtle')
 
t.fd(100)
t.rt(90)
t.fd(100)
t.rt(90)
t.fd(100)
t.rt(90)
t.fd(100)
import turtle as t
t.shape('turtle')

for i in range(4):    # 사각형이므로 4번 반복
    t.forward(100)
    t.right(90)

오각형

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

N각형

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으로 나누어서 외각을 구함

>>> import turtle as t
>>> t.shape('turtle')
>>> t.circle(120)
mport 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도 회전
profile
roundy

0개의 댓글