script 모드에서 코드를 좌라락 쓰고 돌려보면 AttributeError가 발생할 때가 있습니다. 그 이유는 스크립트 명이 호출할 모듈명과 같아서 생기는 문제입니다. 저 또한 turtle.py로 저장하고 shell 상에서 작업하고 있었는데 script 모드에서 자꾸 AttributeError가 발생하길래 구글링해서 찾았습니다. 즉, 호출한 모듈명과 파일명이 같으면 안된다는 것! 즉, turtle 이라는 모듈을 호출하고 있는데 파일명이 turtle.py 라서 conflict 가 발생하는 것입니다. 정확히 왜 충돌이 발생하는지는 모르겠지만.. 참고하시길 바랍니다.
● 터틀 그래픽스(Turtle graphics) 모듈을 사용해서 간단한 그림그리기. 터틀은 어린이 및 초보자가 파이썬을 쉽게 배울 수 있도록 만든 모듈인데, 거북이가 기어가는 모양대로 그림을 그린다고 해서 터틀이라고 한다.
● 사각형 그리기
import turtle as t #turtle 모듈을 불러옴 t로 사용한다 t.shape('turtle') #turtle 모듈의 shape 함수 사용
t.forward(100) #앞으로 100픽셀 t.right(90) #오른쪽으로 90도 꺾기 |
● 오각형 그리기
다각형에서 외각의 합은 항상 360도다. 그래서 사각형은 90도가 4개 들어있다.(90 * 4 = 360). 오각형은 360을 5로 나누면 외각을 구할 수 있다.
import turtle as t t.shape('turtle') for i in range(5): t.forward(100) t.rt(360 / 5) |
● 사용자가 원하는 다각형 그리기
프로그래밍은 이런 방식으로 소스 코드를 일반화해 나가는 과정이다. 처음에는 for i in range(4):와 t.right(360 / 4)처럼 숫자 4를 지정해서 사각형을 그렸다. 이때는 사각형만 그릴 수 있었다. 그 다음에는 4를 5로 바꿔서 오각형을 그렸다. 마지막에는 숫자 대신 n을 사용하여 원하는 모양의 다각형을 그릴 수 있었다. 즉, 공통된 부분을 일반화해서 원하는 결과를 얻어내는 과정이 프로그래밍이며 컴퓨테이셔널 씽킹이다.
#사용자가 원하는 다각형 그리기 import turtle as t n = int(input()) # 사용자 입력 값 : 8 입력 t.shape('turtle') for i in range(n): t.forward(100) t.right(360 / n) # 360을 n으로 나누어 외각을 구함 |
● 다각형에 색칠하기
import turtle as t n = 12 t.shape('turtle') t.color('red') # 빨간색 채우기 t.begin_fill() # 채우기 시작 for i in range(n): t.forward(100) t.right(360 / n) # 360을 n으로 나누어 외각을 구함 t.end_fill() # 채우기 끝 |
|
※ color에 색깔을 지정할 때 'red', 'green', 'blue', 'yellow', 'purple', 'brown', 'gray' 등 영어로 색 이름을 지정합니다. 하지만 색 이름만으로는 다양한 색상을 표현하기가 힘듭니다. 이때는 웹 색상(web color)을 사용하면 됩니다. 웹 색상은 #으로 시작하며 빨강(R), 초록(G), 파랑(B)에 해당하는 두 자리 16진수 세 쌍으로 구성되어 있습니다. #000000: 검정 #FF0000: 빨강 #00FF00: 초록 #0000FF: 파랑 색상의 범위는 00부터 FF까지 사용할 수 있으며 빨강, 초록, 파랑을 조합해서 색상을 만듭니다. |
● 복잡한 도형 그리기
원 그리기
import turtle as t t.shape('turtle') |
import turtle as t n = 120 # 원을 60번 그림 t.shape('turtle') t.speed('fastest') # 거북이 속도를 가장 빠르게 설정 for i in range(n): t.circle(120) # 반지름이 120인 원을 그림 t.right(360 / n) # 오른쪽으로 6도 회전 |
|
speed는 거북이의 속도를 설정합니다. 속도는 다음과 같이 문자열 또는 숫자로 설정할 수 있습니다(숫자는 0.5부터 10까지 설정할 수 있습니다). 여기서는 'fastest'를 지정해서 가장 빠른 속도로 그렸습니다.
|
선을 이용한 복잡한 도형 만들기
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를 그대로 호출하면 현재 모양을 알아낼 수 있습니다.
'Programming > Python' 카테고리의 다른 글
[코딩도장-파이썬] 리스트(List)와 튜플(Tuple) 응용하기 2 (0) | 2020.11.19 |
---|---|
[코딩도장-파이썬] 리스트(List)와 튜플(Tuple) 응용하기 1 (0) | 2020.11.18 |
[코딩도장-파이썬] 중첩 루프 (0) | 2020.11.16 |
[코딩도장-파이썬] break, continue 를 통한 반복문 제어 (0) | 2020.11.15 |
[코딩도장-파이썬] while 반복문 (0) | 2020.11.15 |