You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 07:39:53