首页 > 解决方案 > 从输入函数获取输入,并使用该字母运行函数

问题描述

我知道使用 eval() 函数可以做到这一点,但是它在我的程序中不起作用我不知道为什么。那么,还有其他方法吗?这是一些代码:我正在寻找一种简单的方法,因为我是 python 编程的新手。真的很新……我试过 eval() 但它只是返回一个错误。我已经在这几个小时了,还没有在网上找到答案。如果这是相关的,我使用 repl.it 龟。

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]+'()'
  eval(new2)
  print(new2)

标签: python

解决方案


您可以使用字典:

letter_movements = {'h': h, 'i': i}

然后,当你想运行函数(你有 eval 的地方)时,只需从字典中选择:

letter_movements[new2]()

推荐阅读