关于python的问题,如何解决?

八成是写的代码不对,怎么改才能不报错啊

from sympy import symbols,solve

x=symbols('x')
y=symbols('y')
z=symbols('z')
12≥3x+4y+2y
print(solve(x,y,z>0)
from sympy import symbols,solve

x=symbols('x')
y=symbols('y')
z=symbols('z')
12≥3x+4y+2y
print(solve(x,y,z>0)

img

//头一次搞出了黑色背景的代码,爷青结www

这里用回溯法,就是嵌套循环呗

result=[]
for x1 in range(5):
    for x2 in range(4):
        for x3 in range(7):
            if 3*x1+4*x2+2*x3<=12:
                result.append((x1,x2,x3))
print(result)

结果:

[(0, 0, 0), (0, 0, 1), (0, 0, 2), (0, 0, 3), (0, 0, 4), (0, 0, 5), (0, 0, 6), (0, 1, 0), (0, 1, 1), (0, 1, 2), (0, 1, 3), (0, 1, 4), (0, 2, 0), (0, 2, 1), (0, 2, 2), 
(0, 3, 0), (1, 0, 0), (1, 0, 1), (1, 0, 2), (1, 0, 3), (1, 0, 4), (1, 1, 0), (1, 1, 1), (1, 1, 2), (1, 2, 0), (2, 0, 0), (2, 0, 1), (2, 0, 2), (2, 0, 3), (2, 1, 0), (2, 1, 1), (3, 0, 0), (3, 0, 1), (4, 0, 0)]

正确用法

import sympy
 
x = sympy.symbols('x')
fz = (x-2) ** 2 + 4 
fz_min_x = sympy.minimum(fz, x)
print(fz_min_x)

题目要求: 用回溯算法

from itertools import combinations_with_replacement as comb

def Solution(n, k=3):
        # 数的选择范围在1-n
        def backtrack(n,k,start,track):
            if len(track) == k:
                t = track.copy()
                t = comb(t,3)
                t = tuple(filter(lambda x:3*x[0]+4*x[1]+2*x[2]<=12,t))
                res.extend(t)
                return
            # 注意i从start开始递增
            for i in range(start, n+1):
                # 做选择
                track.append(i)
                backtrack(n,k,i+1,track)
                # 撤销选择
                track.pop()
        res = []
        track = []
        backtrack(n,k,0,track)
        return set(res)

 
print(Solution(12))  #估算大致解的范围,定的太大,计算有点慢

好像还缺少解,再研究研究