为什么我的 eval 命令不显示任何输出?[复制]

Why is my eval command not showing any output? [duplicate]

提问人:Baziga 提问时间:10/15/2023 最后编辑:John KugelmanBaziga 更新时间:10/15/2023 访问量:47

问:

我定义了一个函数eval_loop在该函数中,我用命令提示用户,要求他计算表达式。我要评估的表达式是“2+2”。如果用户按 done 或 Done,while 循环将退出。为什么输入“2+2”时无法接收任何输出?为什么 eval 命令不显示任何输出?

def eval_loop ():
    while True:
        line=input("enter the expression you want to evaluate:")
        if line == "done" or "Done":
            break
        else:
            y=eval(line)
            print(y)
        print (done)

eval_loop()
Python 评估

评论

1赞 Mous 10/15/2023
另外,被广泛认为是一种安全风险。您想要导入库,然后改为调用,这更安全。evalastast.literal_eval
0赞 Ignatius Reilly 10/15/2023
查看 en.wikipedia.org/wiki/Code_injection,Python 的 eval() 有什么作用?stackoverflow.com/a/37081082/15032126。你可以搜索更多的例子......

答:

0赞 tdelaney 10/15/2023 #1

您有一个无法运行的错误。 和 因为 总是一样,你在做任何事情之前都跳出循环。evalif line == "done" or "Done":if (line == "done") or "Done""Done"True

你可以把它改成,但我建议你规范化输入(把它改成一个通用形式)并捕捉更多“done”的拼写。if line == "done" or line == "Done"

(最后一次打印也是一个错误,因为该变量不存在。done

def eval_loop ():
    while True:
        line=input("enter the expression you want to evaluate:")
        if line.lower() == "done":
            break
        else:
            y=eval(line)
            print(y)
        print ("done")

eval_loop()

评论

0赞 Baziga 10/15/2023
完善。非常感谢你,但你能告诉我为什么我的最后一行,打印“完成”,是一个错误吗?我在那里用小写字母 d 写了“done”?
0赞 tdelaney 10/15/2023
您编写了不存在的变量名称。我以为你想要这个字符串,所以在我的代码中进行了更改。done"done"