我正在用python龟制作东西。下面显示的eval函数应该运行h()或i()。这些是现在唯一可行的功能,因此唯一可行的工作是hi或ih或i或h。控制台返回一个notimplementederror:eval尚未实现。我不明白,因为我进入一个全新的东西,并把基本的代码,如eval('1'),但这也不起作用。谢谢顺便说一下,我是python的新手所以我不擅长它,所以如果我犯了愚蠢的错误,请记住我。
import turtle
from time import sleep
ninja = turtle.Turtle()
ninja.hideturtle()
coordinate1 = ninja.xcor()
coordinate2 = ninja.ycor()
new1=''
new2=''
ninja.speed(10)
def h():
ninja.left(90)
ninja.forward(50)
ninja.back(100)
ninja.forward(50)
ninja.right(90)
ninja.forward(35)
ninja.left(90)
ninja.forward(-50)
ninja.forward(100)
coordinate1 = ninja.xcor()
coordinate2 = ninja.ycor()
new1 = coordinate1+50
ninja.penup()
ninja.goto(new1,0)
def i():
ninja.forward(20)
ninja.pendown()
ninja.left(90)
ninja.st()
ninja.right(90)
ninja.stamp()
ninja.ht()
ninja.penup()
ninja.back(20)
ninja.pendown()
ninja.back(50)
coordinate1 = ninja.xcor()
new1 = coordinate1+50
ninja.penup()
ninja.goto(new1,0)
h()
i()
name = input('What is your name. It will be drawn in the tab to the left lowercase only please.')
print('The name will begin to draw in the tab to the left')
sleep(3)
ninja.clear()
ninja.goto(0,0)
name = list(name)
print(name)
length = len(name)
x=0
while (x < length-1):
print(name[x])
x = x + 1
new2=name[x]+'()'
print(new2)
eval(new2)
您不需要也不希望eval()
实现此程序 - 您可以使用将字符映射到函数的字典来实现。下面是使用字典而不是eval()
的代码的简化返工:
import turtle
def h():
ninja.pendown()
ninja.left(90)
ninja.forward(100)
ninja.backward(50)
ninja.right(90)
ninja.forward(40)
ninja.left(90)
ninja.forward(50)
ninja.backward(100)
ninja.right(90)
ninja.penup()
ninja.forward(25)
def i():
ninja.forward(20)
ninja.left(90)
ninja.forward(70)
ninja.right(90)
ninja.pendown()
ninja.circle(5)
ninja.penup()
ninja.left(90)
ninja.backward(20)
ninja.pendown()
ninja.backward(50)
ninja.right(90)
ninja.penup()
ninja.forward(45)
letters_to_code = {"h": h, "i": i}
name = input('What is your name? Lowercase only please: ')
ninja = turtle.Turtle()
ninja.penup()
for letter in name:
if letter in letters_to_code:
letters_to_code[letter]()
ninja.hideturtle()
turtle.done()
有些事情要考虑: