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

Python报错:unsupported operand type(s) for +: 'int' and 'str' 求解决方案

问题修复方案

错误原因

你遇到的TypeError是因为number1、number2、number3是整数类型,而operator1、operator2是字符串类型,Python不允许直接用+把整数和字符串拼接在一起,因此触发了类型不兼容的错误。

修复步骤

1. 将数字转为字符串后拼接表达式

把整数类型的数字转换成字符串,再和运算符拼接成完整的数学表达式字符串,这样pd.eval才能正确解析计算。

2. 处理浮点数与整数的比较问题

如果题目包含除法,pd.eval返回的结果会是浮点数,而用户输入的是整数,直接用==比较可能出现逻辑问题(比如10/2=5.0和输入的5本质相等,但类型不同),可以判断浮点数是否为整数,再转换类型后比较。

修复后的代码

import random
import pandas as pd

operator_list = ["*", "/", "+", "-"]

number1 = random.randint(1,100)
number2 = random.randint(1,100)
number3 = random.randint(1,100)
operator1 = random.choice(operator_list)
operator2 = random.choice(operator_list)

def ask():
    print(f"Was ist die Loesung fuer -> {number1} {operator1} {number2} {operator2} {number3}? \n")
    x = int(input("Deine Antwort > "))
    # 将数字转为字符串,拼接成可被解析的表达式
    expression = f"{number1}{operator1}{number2}{operator2}{number3}"
    solution = pd.eval(expression)
    # 处理浮点数转整数的情况
    if isinstance(solution, float) and solution.is_integer():
        solution = int(solution)
    if x == solution:
        print("OK")
    else:
        print(f"Falsch! Die richtige Antwort ist {solution}")

ask()

额外优化建议

  • 添加异常捕获,处理用户输入非整数的情况,避免程序崩溃。
  • 若需要更严谨的运算逻辑,可以自定义运算优先级(pd.eval默认遵循数学运算优先级)。

内容的提问来源于stack exchange,提问作者flör

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 02:54:57