自定义eval_loop函数输入表达式无输出,eval命令为何不生效?
问题分析与解决
你的代码存在两个关键问题,导致输入表达式后无法得到输出:
条件判断逻辑错误
原代码中if line == "done" or "Done"的写法完全错误,因为非空字符串"Done"在布尔判断里永远为True,等价于(line == "done") or True。这会导致不管你输入什么内容,都会直接触发break跳出循环,根本没机会执行eval和输出结果。
正确的判断方式应该是检查输入是否等于"done"或"Done",可以写成if line == "done" or line == "Done",更简洁的写法是用line.lower() == "done",这样能兼容大小写混合的退出指令(比如"DONE")。未定义变量错误
代码最后一行print(done)中的done是未定义的变量,执行时会触发NameError,而且这行代码本身没有存在的必要,应该直接删除。
修正后的代码
def eval_loop(): while True: line = input("enter the expression you want to evaluate:") if line.lower() == "done": break y = eval(line) print(y) eval_loop()
现在输入"2+2"就能正常得到输出4,输入任意大小写的"done"都可以退出循环。
内容的提问来源于stack exchange,提问作者Baziga
相关产品推荐
相关产品推荐

