【问题标题】:TypeError: cannot concatenate 'str' and 'int' objectsTypeError:无法连接“str”和“int”对象
【发布时间】:2011-10-23 12:28:14
【问题描述】:

我现在正在学习 Python,耶!无论如何,我有一个小问题。我在这里没有看到问题:

x = 3
y = 7
z = 2

print "I told to the Python, that the first variable is %d!" % x
print "Anyway, 2nd and 3rd variables sum is %d. :)" % y + z

但 Python 的想法不同 - TypeError: cannot concatenate 'str' and 'int' objects

为什么会这样?我没有将任何变量设置为字符串……就我所见。

【问题讨论】:

  • 请注意,在当前版本的 Python 中进行字符串格式化的推荐方法是 str.format() 函数。 "Anyway, 2nd and 3rd variables sum is {0}. :)".format(y+z)0 在 Python 2.7+ 中可以省略,在这种情况下占位符只是 {}。)

标签: python string integer concatenation typeerror


【解决方案1】:

% 的优先级高于+,因此s % y + z 被解析为(s % y) + z

如果s 是一个字符串,那么s % x 是一个字符串,(s % y) + z 尝试将一个字符串(s % y 的结果)和一个整数(z 的值)相加。

【讨论】:

    【解决方案2】:

    你需要放括号:(y+z)

    【讨论】:

    • 如果不是python认为你在做 ("Anyway %d" % y)+z
    • %的优先级低于+,所以a % b + c被解析为(a % b) + c,而你想要的是a % (b + c)
    • 因为它使用y 格式化字符串然后尝试将格式化字符串与z 连接,这会产生错误,因为它们属于不同的类型。
    • 谢谢大家的回答!我只是闻到学习 Python 对我来说会很有趣! :))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-01
    • 2020-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    • 1970-01-01
    相关资源
    最近更新 更多