我需要能够向用户询问诸如forward(90)之类的海龟命令并将其作为海龟命令执行,例如turtle.forward(90)并重复直到用户退出。 到目前为止我有:
def turtle_input(prompt):
"""Loop to ask for user input and execute as a turtle command"""
import turtle
while True:
t = input('Enter a turtle command: ')
if t in ['Quit' , 'quit', 'q', 'Q']:
break
turtle.(t)
return prompt
答案 0 :(得分:0)
执行任意代码通常不是一个好主意,因为它是一个巨大的安全漏洞,但这是一种方式:
eval('turtle.{0}'.format(t))
考虑用户可以传入的以下字符串,这不是一个好主意:
t = 'forward(90) or __import__("os").system("rm -rf ~")'
突然间,您的主目录开始被删除 - 糟糕。
稍微不那么强大但更安全的解决方案可能是使用ast.literal_eval
并自己解析字符串:
import ast
#...
funcname,args = t.split('(',1)
args = ast_literal_eval('('+args)
if hasattr(args,'__iter__'):
getattr(turtle,funcname)(*args)
else:
getattr(turtle,funcname)(args)