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

Python入门学习者遇TypeError问题求助:eval()参数类型错误

解决eval()引发的TypeError错误

问题代码

p1, p2 = eval(input("input the share price of two organizations:   "))
if (p1>p2):
    print("the first organization is performing better")

报错信息

TypeError: eval() arg 1 must be a string, bytes or code object

错误原因

这个错误大概率是因为你在Python 2环境下运行代码导致的。Python 2中input()函数会直接对用户输入的内容求值,返回数值或元组对象,而eval()要求传入字符串类型参数,因此触发类型错误。另外,即便在Python 3中,eval()也存在安全风险(可能执行恶意输入代码),不推荐用于处理用户输入。

解决办法

  • 办法1:适配Python 2环境
    把input()替换为raw_input(),Python 2中raw_input()会返回用户输入的原始字符串,满足eval()的参数要求:

    p1, p2 = eval(raw_input("input the share price of two organizations:   "))
    if p1 > p2:
        print("the first organization is performing better")
    
  • 办法2:更安全的输入处理(推荐)
    无论Python版本,都可以用split()分割输入字符串,再转换为数值类型,彻底避免eval()的安全隐患:

    # Python 3版本
    user_input = input("请输入两家机构的股价(用逗号分隔):   ")
    p1, p2 = map(float, user_input.split(","))
    if p1 > p2:
        print("第一家机构表现更好")
    
    # Python 2版本
    user_input = raw_input("请输入两家机构的股价(用逗号分隔):   ")
    p1, p2 = map(float, user_input.split(","))
    if p1 > p2:
        print("第一家机构表现更好")
    

    使用此方法时,用户需按数值, 数值的格式输入,例如45.6, 78.9。

内容的提问来源于stack exchange,提问作者Rajat Rai

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 16:54:19