尝试评估用户输入并将其用作python中的变量

2024-09-29 01:25:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python和任何与此相关的代码的初学者,我在编写一些代码时遇到了一些问题:

loop = 0
hellosentence = "You have selected the hello sentence"
questionsentence = "You have selected the question sentence"

usrinput  = raw_input("Which test would you like to bring up? ")

print eval(usrinput)+sentence

end = raw_input("Press any key to quit...")

我试着在运行代码时考虑到这一点。在

有多个名字结尾有句子。在

请求用户要显示哪个“句子”

一旦用户输入了句子,它会评估他们输入的内容,说“你好” 并将其与“语句”组合,生成变量“hellosentence”,从而调出变量的字符串。在

我14岁,正在努力学习如何理解这门语言,所以如果有人知道我能做些什么来纠正这个错误,我将非常感激。在


Tags: theto代码用户loopyouinputraw
3条回答

这应该可以完成任务-除了eval中不安全的部分之外;)

input = raw_input # remove this if you already use Python 3...

def my_func():
    for i in range(10):
        pass
    return "How are you today?"

sentences = {}
sentences["hello"] = "Hello world..."
sentences["question"] = my_func

usrinput = input("Which test...?")

try:
    obj = sentences[usrinput]
    if hasattr(obj, '__call__'):
        print(obj())
    else:
        print(obj)
except KeyError:
    print("Invalid input...")
finally:
    input("Press ENTER to quit...")

首先,你的

loop = 0 

这句话毫无意义。你可以看到它再也不用了。在

^{pr2}$

我可以看到您要实现的目标,在变量中打印hellosentence。但是,它不是那样工作的。使用eval()对您没有多大帮助,所以想象一下编写

^{3}$

这不会打印出任何变量的值,变量的开头与usrinput的开头和句子的结尾相同。它将打印usrinput的值,然后打印句子的值。因为你没有句子变量,你得到了一个错误,因为句子的值不存在。在

假设用户在提示输入时输入了“hello”。打印行不会打印hellosentence的值,但会打印“hello”,然后因为句子不存在而出现错误。基本上,你不能把它当作纯英语,因为你可以有这样的东西:

pretzel = "apple"
print pretzel

这将打印单词“apple”,而不是“pretzel”。如果你不明白这一点,我强烈建议你阅读变量和赋值。在

你必须检查usrinput的值。在

if usrinput = "hello":
    print hellosentence

程序最后一行的end变量什么也不做,因为只将值赋给end。试着像我们对usrinput一样检查end的值。在

似乎您对程序的实际执行方式有误解。我建议阅读变量和赋值。在

eval将获取您给它的字符串并对其求值。在本例中,它获取输入的字符串。根据您定义的变量判断,您需要接受输入并将sentence附加到它,因此如果输入'hello',则返回hellosentence的值。在

解决这个问题的直接方法是给eval正确的输入:

print eval(usrinput+'sentence')

这也许能解决你的问题,但这不是一个好办法。eval是一个错误的工作工具;错误恢复将是一个问题,如果这是生产代码,你将为那些想把你的程序变成病毒的人打开一个大洞。在

合适的工具是一个字典,用它可以使用输入来查找正确的输出。在

^{pr2}$

相关问题 更多 >