【发布时间】:2020-01-20 16:04:35
【问题描述】:
所以,我在 python 中使用了一个 exec() 函数,我只在其中插入了字符串,但我仍然得到
TypeError: can only concatenate str (not "int) to str
我该如何解决这个问题?
def function(e_mass,x):
global pic
e_string = ""
for i in range(len(e_mass)):
if e_mass[i] == "x":
e_string += str(x)
else:
e_string += e_mass[i]
return e_string
exec("if y == " + function(e_mass,x) + ":" + "\n" + " pic += 1" + "\n" + "else:" + "\n" + " pic += 0")
sins = ['x', ' ', '+', '-', '*', '/', '%', '\n', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
for i in range(0,len(e)):
e_mass.append(e[i])
if e[i] not in sins:
print("it's wrong, pal")
break
if e[i] == 'x':
isx = 1
xs.append(i)
【问题讨论】:
-
您需要展示
e_mass的样本。如果元素是int,您将收到您显示的错误。请使用完整的回溯更新问题。 -
另外,你为什么使用 exec?你可以在那里执行代码吗?
-
这个错误意味着
e_mass有一些数字类型的元素。错误将出现在else部分,您尝试使用数字操作数执行+=。如果你在那里也使用str(),那就没问题了。事实上,在if块中,您不需要str(),因为您知道该值是一个字符串。 -
错误是证明
e_mass确实不 只包含字符串。但输出可能会产生误导。数字输出为字符串... -
您只需提供代码和数据来重现错误,就可以省去我们在这里的所有讨论。那么讨论结束。