2013-10-06 3 views
0

вот мой код:ошибка Python неподдерживаемый тип операнда (ов) для +: «INT» и «ул»

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, добавление дополнительных скобок там, где они не нужны, обычно считается плохим. Читатель будет тратить время на то, чтобы выяснить, что вы пытаетесь сделать (создать кортеж? Переопределить приоритет оператора? Вызвать функцию?) И, возможно, прийти к неверному завершению (например, написать нерелевантный и бесполезный ответ типа «Если вы хотите, чтобы это был кортеж, вам нужно написать '(« Dimnd »,)'). Просто напишите 'if suit ==" D ":', 'suit =" Dimnd "' и 'return value + 'of" + suit'. – abarnert

ответ

4

Эта ошибка (правильно названная TypeError) может быть сгенерирована только в том случае, если value является целым числом. Кроме того, в 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 строку перед ее использованием.

Смежные вопросы