【问题标题】:Why sudden Type error appears when i insert only strings in exec() function?当我在 exec() 函数中只插入字符串时,为什么突然出现类型错误?
【发布时间】: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 确实 只包含字符串。但输出可能会产生误导。数字输出为字符串...
  • 您只需提供代码和数据来重现错误,就可以省去我们在这里的所有讨论。那么讨论结束。

标签: python type-conversion


【解决方案1】:

问题出在 exec 代码中。我忘记在代码中的 1 和 0 之前添加 "

【讨论】:

  • 当你再次得到类似的东西时。您可以将您尝试 exec() 的项目分配给一个变量,然后打印它以查看将要执行的内容,然后再将其传递给 exec()
猜你喜欢
  • 2021-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-21
  • 1970-01-01
  • 2021-11-14
相关资源
最近更新 更多