我收到此错误。 宏我在做什么错?
from sympy import *
var('y')
x=10
d=factorint(x)
print(d)
for k, v in d.items():
y=y+str(k)+'^' +str(v)
print(y)
# {2: 1, 5: 1}
# Traceback (most recent call last):
# File "C:/xxx/.PyCharmCE2018.2/config/scratches/soinsuu.py", line 9, in <module>
# y=y+str(k)+'^' +str(v)
# TypeError: unsupported operand type(s) for +: 'Symbol' and 'str'
#
# Process finished with exit code 1
我要
10=2^1+5^1
10=2**1+5**1
答案 0 :(得分:1)
var('y')
等效于y = symbols('y')
,因此y
是一个符号。然后执行y+str(k)
,添加一个符号和一个字符串。那是类型错误。
y
的类型应该是字符串。并且您希望该字符串以10=
开头,因此使用以下代码对其进行初始化:
from sympy import *
x = 10
y = str(x) + '='
d = factorint(x)
print(d)
for k, v in d.items():
y = y + str(k)+'^' +str(v)
print(y)
也就是说,您缺少算术运算...它应该是*
,而不是+
。 10肯定不等于2和5之和。
此外,Python为此使用了join
字符串方法。用它代替循环:
from sympy import *
x = 10
d = factorint(x)
y = str(x) + '=' + '*'.join([str(k)+'^' +str(v) for k, v in d.items()])
print(y)
答案 1 :(得分:0)
def Myfactorint(x):
return '+'.join([str(k)+'^' +str(v) for k, v in factorint(x).items()])
from sympy import *
x=10
print(x,'=', factorint(x))
print(x,'=',Myfactorint(x))
# 10 = {2: 1, 5: 1}
# 10 = 2^1+5^1