2016-09-03 4 views
0

누군가가 어떤 색상을 입력했는지와 거북이가 원하는 모양을 입력하면 즉석 결과를 허용하는 코드를 작성하려고했습니다. 기본적으로, 제가 말하고자하는 것은 여러분이 색깔을 물어볼 때 "오렌지색"이라고 말하면, 예를 들어 색깔이 즉시 오렌지색으로 바뀔 것입니다.모양과 색상에 대한 Python 거북이 사용자 입력

데프 거북 (모양) :

if shape == "triangle": 
    turtle.circle(40, steps=3) 
elif shape == "square": 
    turtle.circle(40, steps=4) 
elif shape == "pentagon": 
    turtle.circle(40, steps=5) 
elif shape == "hexagon": 
    turtle.circle(40, steps=6) 

데프 (모양) :

shape = eval(input("Enter a shape: ")) 
Turtle(shape) 

데프 거북이 (컬러) :

if color == "red": 
    turtle.color("red") 
elif color == "blue": 
    turtle.color("blue") 
elif color == "green": 
    turtle.color("green") 
elif color == "yellow": 
    turtle.color("yellow") 

여기에 내가 작성한 코드의 기본 색상() :

color = eval(input("Enter a color: ")) 
Turtle(color) 

약간 동작합니다. 한 번 변경 한 후에는 파란색으로 변한다고 말하면 사용자 프롬프트에 입력 한 내용과 상관없이 아무 것도하지 않습니다.

P. 나는 문제는 당신이 정말로 mainloop()를 사용하여 거북이 청취자 제어를 넘겨 필요가있다 파이썬 3.5.2

답변

1

을 실행하는거야 그리고 당신은 더 이상 최고 수준의 함수처럼 호출을 통해 통신 할 수 없습니다 :

color = input("Enter a color: ") 

import turtle 

current_shape = "triangle" 

steps = {"triangle": 3, "square": 4, "pentagon": 5, "hexagon": 6} 

def onkey_shape(): 
    shape = turtle.textinput("Shape Selection", "Enter a shape:") 
    if shape.lower() in steps: 
     turtle.reset() 
     set_color(current_color) 
     set_shape(shape.lower()) 
    turtle.listen() # grab focus back from dialog window 

def set_shape(shape): 
    global current_shape 
    turtle.circle(40, None, steps[shape]) 
    current_shape = shape 

current_color = "red" 

colors = {"red", "blue", "green", "yellow", "orange"} 

def onkey_color(): 
    color = turtle.textinput("Color Selection", "Enter a color:") 
    if color.lower() in colors: 
     turtle.reset() 
     set_color(color.lower()) 
     set_shape(current_shape) 
    turtle.listen() # grab focus back from dialog window 

def set_color(color): 
    global current_color 
    turtle.color(color) 
    current_color = color 

set_color(current_color) 
set_shape(current_shape) 

turtle.onkey(onkey_color, "c") 
turtle.onkey(onkey_shape, "s") 

turtle.listen() 

turtle.mainloop() 

거북이 창 교류를 확인 : 파이썬 3를 사용하고 있기 때문에

그러나, 우리는 동적으로 현재 도면에 대한 변경 사항을 입력하라는 메시지를 표시하고 수 있도록 기능 대화 새로운 입력을 사용할 수 있습니다 tive (그것을 선택하면, 에 초점을 둡니다.) 그러면 'C'를 누르면 새로운 색상 (고정 세트) 대화 상자가 나타나고 'S'를 누르면 a에 대한 대화 상자가 나타납니다. 새로운 모양. 코드는 변경 내용이있는 새 도면을 만들기 전에 reset()을 사용하여 이전 도면을 제거합니다.