【问题标题】:Python error unsupported operand type(s) for +: 'int' and 'str'Python 错误不支持 + 的操作数类型:'int' 和 'str'
【发布时间】:2013-10-12 19:50:24
【问题描述】:

这是我的代码:

def naame(value, suit):
    if suit == ("D"):
            suit ==  ("Dimnd")
    return  (value + " of " +suit)

所以我认为问题出在哪里,当我也添加“+”时......但我仍然不知道如何去做......

我对 python 还是很陌生。请帮帮我

【问题讨论】:

  • 那么“值”应该是一个整数吗?如果是这样,你想传入 str(value)
  • 行suit == "Dimnd" 应该是suit = "Dimnd"。 == 测试相等,它不做赋值。
  • 另外,在 Python 中,在不需要的地方放置额外的括号通常被认为是不好的风格。读者会浪费时间试图弄清楚你试图做什么(创建一个元组?覆盖运算符优先级?调用一个函数?),甚至可能得出错误的结论(例如,写一个不相关且无用的答案,例如“如果您希望它成为一个元组,则必须写 ("Dimnd", )”)。只需写if suit == "D":、suit = "Dimnd" 和return value + " of " + suit。

标签: python if-statement return-value


【解决方案1】:

只有当value 是整数时,才会生成该错误(正确称为TypeError)。此外,在 Python 中,您不能将整数和字符串与 + 放在一起。

要解决您的问题,请将value 设为字符串:

return (str(value) + " of " + suit)

通过将value 放入str(),它被转换为它的字符串表示。请参阅下面的示例:

>>> a = 1
>>> type(a)
<type 'int'>
>>> a = str(a)
>>> type(a)
<type 'str'>
>>>

除了我上面给出的解决方案,还有一些其他的方法可以做你想做的事情:

return "%i of %s" % (value, suit)

return "{0} of {1}".format(value, suit)

如果您想获得有关最后两种方法的参考,请查看here。

不管你选择哪一个,这里的核心概念是你不能将整数和字符串结合起来。这三种方法在使用之前都会将value 变成一个字符串。

【讨论】:

    猜你喜欢
    • 2014-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    • 2018-02-05
    相关资源
    最近更新 更多