z3 模块
创建未知变量
声明整型 Int
1
2
3x = Int('x')
a, s, d = Ints('a s d') # 一次全部列出
v = [Int(f'v{i}') for i in range(len(s))] # 参数较多,则建议使用循环,批量声明声明布尔型 Bool
1
x = Bool('x')
声明实数型 Real
1
x = Real('x')
创建约束器
1 | solver = Solver() |
添加约束
1 | solver.add(v[0] * 7 == 546) |
注意:z3 中的整数除法为
/
,使用//
会报错
判断是否有解
1 | if solver.check() == sat: |
求解
1 | f = solver.model() |
当问题有多个解时,z3求解器只会输出一个解,可以添加适当的约束
测试用例
1 | from z3 import * |