我正在 python 中使用 sympy 进行编码,并且尝试对元组进行一些计算,但是每次我尝试在下一个结果中使用上一个结果时,都会出现错误:
TypeError: 'Piecewise' object is not iterable.
到目前为止我使用的代码是:
from sympy import symbols, Piecewise,Eq,summation,Mod
def math_func(k):
result = Piecewise(
((1,1), Eq(Mod(k,3),1)), # Mod(k,3) does k % 3
((1,2), Eq(Mod(k,3),2)),
((3,3), Eq(Mod(k,3),3)), # No change if k % 3 == 0
)
#print(result.args)
result2 = Piecewise(
(sum(result), Eq(Mod(k,3),1)),
(sum(result), Eq(Mod(k,3),2)),
(sum(result), Eq(Mod(k,3),3)), # No change if k % 3 == 0
# Default case to keep result unchanged
)
return result2
x = symbols('x')
total = summation(math_func(x), (x, 2, 2))
print(total)
当我运行这段代码时,它给了我上面所说的错误。问题是
Eq()
。它正在评估一个符号,当我执行 print(result.args)
时,它会分段返回结果中的所有节。自己尝试一下吧。
我需要以这种方式使用我的代码,因为这是评估符号的唯一方法,如果我这样做
k %3 == number
或 Mod(k,3) == number
它不起作用,它只适用于数字。
我不想要任何循环。有人可以告诉我如何修复此代码吗?
total = summation(math_func(x), (x, 2, 2))
错了。
函数名称是sum
,而不是summation
有一些事情可能是错误的。