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

Python将数字与运算符拼接为表达式返回布尔值的实现问题

报错原因

你代码中print(num1 + operators[i] + num2)行尝试直接对int类型的num1/num2和字符串类型的运算符执行+运算,Python默认将此处的+识别为数值相加操作,类型不匹配因此触发报错。

实现方案

如果需要拼接为表达式并返回对应布尔值,可参考以下两种实现方式:

方案1:使用eval()执行表达式(写法简单,适合自定义可控的表达式场景)

import random

operators = ['<', '>', '<=', '>=', '==']

for i in range(5):
    # 若需要每次循环复用同一组随机数,可把num1、num2定义移到循环外
    num1 = random.randint(1,50)
    num2 = random.randint(1,50)
    print("Number 1: " + str(num1))
    print("Number 2: " + str(num2))
    # 先拼接为完整表达式字符串
    expr = f"{num1}{operators[i]}{num2}"
    # 执行表达式得到布尔结果
    bool_result = eval(expr)
    print(f"表达式运行结果:{bool_result}\n")

方案2:使用operator模块映射运算符(更安全,无恶意代码执行风险)

import random
import operator

# 建立运算符与对应比较方法的映射关系
op_func_map = {
    '<': operator.lt,
    '>': operator.gt,
    '<=': operator.le,
    '>=': operator.ge,
    '==': operator.eq
}

for op, func in op_func_map.items():
    num1 = random.randint(1,50)
    num2 = random.randint(1,50)
    print("Number 1: " + str(num1))
    print("Number 2: " + str(num2))
    print(f"表达式:{num1} {op} {num2}")
    # 调用对应方法直接得到布尔结果
    bool_result = func(num1, num2)
    print(f"表达式运行结果:{bool_result}\n")

内容的提问来源于stack exchange,提问作者Caleb Murnan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 01:18:03