2013-10-06 58 views
0

这里是我的代码:Python的错误不支持的操作数类型(S):“诠释”和“海峡”

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

所以我觉得问题所在是,当我加上“+”太多了。 ..但我仍然不知道如何去做这个...

我还是相当新的python。请帮助我

+1

那么“价值”应该是一个int?如果是这样,你想传入str(值) – Joe

+1

'suit =='Dimnd“'应该是'suit =”Dimnd“'。 '=='测试相等,它不会做任务。 – SethMMorton

+0

另外,在Python中,将额外的括号放在不需要的地方通常被认为是不好的风格。读者会浪费时间试图找出你正在做什么(创建一个元组?重载操作符优先级?调用一个函数?),甚至可能会得出错误的结论(例如,写一个不相关和无用的答案,如“If你希望这是一个元组,你必须编写'(“Dimnd”,)'“)。只要写下“+ suit”的“if suit ==”D“:','suit =”Dimnd“'和'return value +”。 – abarnert

回答

4

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

解决您的问题,使value的字符串:

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

通过将valuestr(),将其转换成字符串表示。请参见下面的例子:

>>> 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成为一个字符串。

相关问题