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