자주 사용하는 거북이 명령어(함수) 정리
pos() / positiion() : 거북이의 현재 위치(x, y좌표)를 구한다.
ex) t.pos()
**
xcor(), ycor()** : 거북이의 x 좌표 또는 y 좌표를 구한다.
ex) a = t.ycor()
goto(x,y), setpos(x,y) : 거북이를 특정 위치(좌표)로 보낸다.
ex) t.goto(100,50)
*set(x), sety(y) * : 거북이의 x 좌표나 y좌표를 지정한 위치로 이동한다.
ex) t.sety(50)
distance(x,y): 현재 거북이 위치에서 특정 위치까지의 거리를 계산한다.
ex) d = t.distance(100,100)
heading() : 거북이가 바라보는 각도를 구한다.
ang = t.heading()
towards(x,y) : 현재 거북이가 있는 위치에서 특정 위치까지 바라보는 각도를 구한다.
ex)ang = t.towards(10,10)
*setheading() / seth() * : 거북이가 바라보는 방향을 바꾼다.
ex)t.setheading(90) : 거북이가 화면 위쪽을 바라본다.
home() : 거북이의 위치와 방향을 처음 상태로 돌린다.
ex) t.home()
onkeypress(함수,"키 이름") : 키보드를 눌렀을 때 실행할 함수를 정한다.
ex) def f():
t.forward(10)
t.onkeypress(f, "up")
위쪽 방향키 up을 누르면 f함수를 호출하며, f 함수는 거북이를 10만큼 앞으로 이동시킨다.
onscreenclick(함수) : 마우스 버튼을 눌렀을 떄, 실행할 함수를 정한다.
ex)t.onscreenclick(t.goto)
*ontimer(함수, 시간) * : 일정한 시간이 지난 뒤 실행할 함수를 정한다.
ex) def f():
t.forward(10)
t.ontimer(f, 1000)
1,000ms (밀리세컨드, 1초) 후에 함수 f를 호출한다.
listen() : 사용자 입력이 잘 처리되도록 거북이 그래픽 창에 포커스를 준다.
ex)t.listen()
-> 키보드 입력이 현재 실행 중인 다른 창으로 가지 않고, 거북이 그래픽 창에서 처리되도록 함
title("창 이름") : 거북이 그래픽 창의 이름을 지정한다.
ex)t.title("Welcome")
거북이 그래픽 창의 이름이 Untitle에서 Welcome으로 바뀐다.
write("문자열") : 현재 겁구이 위치에 문자를 출력한다.
t.write("Hello")
t.write("Hello", False, "center", ("", 20))
현재 거북이 위치에, 가운데 정렬로 크기가 20인 Hello라는 문구를 출력한다.
태극 모양을 그리는 프로그램
import turtle as t
t.bgcolor("black") # 배경색을 검은색으로 지정
t.speed(0) # Maximum turtle speed
for x in range(200): # repeat 200 times
if x % 3 == 0: # chang color repeatly 1, 2, 3
t.color("red")
if x % 3 == 1:
t.color("yellow")
if x % 3 == 2:
t.color("blue")
t.forward(x * 2) # move forward x*2
t.left(119) # turn left by 119 degree
연산자 %는 x를 3으로 나눈 나머지값이 0, 1, 2냐에 따라서 색이 변함.
키보드로 거북이를 조종해서 그림 그리기
import turtle as t
def turn_right(): # 오른쪽으로 이동하는 함수 정의
t.setheading(0)
t.forward(10)
def turn_up(): # 위로 이동하는 함수 정의
t.setheading(90) # 거북이가 바라보는 방향 설정. 위로 바라봄.
t.forward(10)
def turn_left():
t.setheading(180)
t.forward(10)
def turn_down():
t.setheading(270)
t.forward(10)
def blank(): # 화면을 지우는 함수
t.clear()
t.shape("turtle")
t.speed(0)
t.onkeypress(turn_right, "Right") # 방향키 오른쪽을 누르면 turn_right 함수 작동
t.onkeypress(turn_up, "Up")
t.onkeypress(turn_left, "Left")
t.onkeypress(turn_down, "Down")
t.onkeypress(blank, "Escape")
print("안녕하세요, 거북이 그리기 게임입니다!")
print("화살표를 누르면 거북이가 상하좌우로 움직입니다")
print("ESC버튼을 누르면 그림이 사라집니다.")
print("재밌는 그림그리기를 하세요!")
t.listen()
※ onkeypresss(함수이름, "키 이름")으로 구성되어 있다.
"키 이름"에 해당되는 입력을 할 시, 함수일므을 호출하여 실행한다.
마우스로 거북이를 조종해서 그림 그리기
import turtle as t
t.speed(0)
t.pensize(2) # 펜 굵기 2
t.hideturtle() # 거북이를 화면에서 숨기기
t.onscreenclick(t.goto) # 화면 클릭 시 t.goto 함수를 호출 -> 움직이면서 그림그
==============================================================================
계산 맞히기 게임 만들기
컴퓨터는 random모듈을 이용하여 간단한 덧셈, 뺄셈, 곱셈 문제를 만들어서 보여준다.
print("계산 맞히기 문제게 오신 것을 환영합니다! 컴퓨터가 제공하는 다양한 수학 계산 문제를 풀어보세요")
import random
def make_question():
a = random.randint(1, 50) # 계산에 사용될 정수 a
b = random.randint(1, 50) # 계산에 사용될 정수 b
rancal = random.randint(1, 3) #random calculation, 사칙연산 부호를 결정함
q = str(a) # 사칙연산 부호 앞에 나탈 a값 정수를 문자열로 바꾸어 저장
if rancal == 1:
q = q + "+"
if rancal == 2:
q = q + "-"
if rancal == 3:
q = q + "*"
q = q + str(b) # 위에서 나타난 두 번째 숫자를 question에 저장
return q # 만들어진 문제를 반환
sc1 = 0 # 정답 및 오답 횟수를 젖아할 변수 sc1, sc2를 0으로 초기화
sc2 = 0
for x in range(5): # 문제를 5회 반복하여 출력함
q = make_question() # question은 make_question() 함수 호출
print(q) # 문제를 출력
ans = input("=") # 정답 입력
r = int(ans) # 입력받은 정답을 정수로 바꿔줌
if eval(q) == r: #만약 입력한 답 r이 question값과 같다면
print("정답!")
sc1 = sc1 + 1
else:
print("오답 ㅜㅜ")
sc2 = sc2 + 1
print("정답 :", sc1, "오답 :", sc2)
if sc2 == 0: #오답이 0개
print("천재네요!")
모범답안을 읽지 않고 구현하려고 했으나, random 함수 소환 이후에는 머리가 하얘져서 한참 끙끙대다가 한줄씩 한줄씩 읽으며 타이핑하는 참사가 발생했습니다.
나름대로 복기를 해본다면
- 사칙연산에 사용될 두 변수 a, b의 범위를 지정하고 (너무 높으니 곱셈문제 어려워짐)
- 변수 사이에 들어갈 사칙부호 (나누기는 소수점단위 문제로 X)를 1, 2, 3으로 지정함
- q라는 녀석은 a값 정수를 문자로 바꾸어서 출력하도록 함 (""가 사라짐)
'코딩 - 주피터 노트북 (파이썬)' 카테고리의 다른 글
[파이썬 Jupyter Notebook 실전 입문] 간단한 배경지식, 명령어, 패키지 적용 등 (0) | 2019.04.09 |
---|---|
[파이썬코딩] 손에 잡히는 파이썬 (0) | 2019.04.08 |
[모두의 파이썬] Day 11, 12함수 정의 및 호출 / (0) | 2019.02.26 |
[모두의 파이썬] Day 9, 10 Random 모듈로 임의의 수 뽑기 / while 명령으로 반복하기 (0) | 2019.02.26 |
[모두의 파이썬] Day 7, 8 입력/출력, True/False 판단 (0) | 2019.02.15 |