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

Python中如何用动态嵌套循环遍历指定范围值生成布尔表达式真值表

正确实现代码

from itertools import product

expression = "a and (b or a)"
# 变量列表可根据实际需求调整长度,支持任意数量输入变量
variables = ['a', 'b']

# 生成所有变量的0/1取值组合,repeat参数等于变量总数
for value_tuple in product([0, 1], repeat=len(variables)):
    # 把变量名和对应取值绑定为字典
    var_dict = dict(zip(variables, value_tuple))
    # 求值时传入变量字典作为局部命名空间,避免污染全局变量
    result = eval(expression, {}, var_dict)
    # 按顺序输出当前变量取值 + 表达式结果
    print(*value_tuple, result)

原有代码问题说明

  1. product调用参数错误:你传入的是变量名列表,该方法需要接收的是取值范围,正确传参应该是重复len(variables)次[0,1],才能生成所有0/1组合
  2. 没有绑定变量取值和变量名:eval执行表达式时找不到a/b/c的定义,需要把生成的取值和变量名一一对应后,传入eval的命名空间参数

扩展:根据输入变量数动态生成变量名

如果从用户处获取了输入变量数inputs,不需要手动写变量列表,可以自动生成对应数量的单字母变量名:

inputs = 3 # 可替换为用户输入的数值
variables = [chr(ord('a') + i) for i in range(inputs)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 12:09:03