2014-09-21 2 views
0

Код:неподдерживаемый тип (ы) операндом +: 'NoneType' и 'ул' и 'Int'

String1 = " Is right" 
g = lambda x: x ** 2 
print(g(8)) + str(String1) 

Ошибка:

Traceback (most recent call last): 
    File "C:/Users/Computer/Desktop/Testing.py", line 3, in <module> 
    print(g(8)) + str(String1) 
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str' 

Кодекса2: I попытался добавить это тоже:

g = lambda x: x ** 2 + " Should be right!" 
print(g(8)) 

Ошибка:

Traceback (most recent call last): 
    File "C:/Users/Computer/Desktop/Testing.py", line 2, in <module> 
    print(g(8)) 
    File "C:/Users/Computer/Desktop/Testing.py", line 1, in <lambda> 
    g = lambda x: x ** 2 + " Should be right!" 
TypeError: unsupported operand type(s) for +: 'int' and 'str' 

Я пробовал с междунар и Обл, но он по-прежнему были проблемы?

Также При креплении, объясните, пожалуйста, как работает фиксированный код :) я не хочу просто скопировать фиксированную линию

ответ

3

Вы Суммируя результат print() и str(), но print() возвращает None.

Вы, наверное, хотели напечатать результат добавления g(8) и str() вместо этого, но вам придется повернуть возвращаемое значение g(8) в строку тоже:

print(str(g(8)) + str(String1)) 

Обратите внимание на размещение замыкающего ) для функция print()!

Второй str() вызов вообще не нужен, потому что String1 уже строка:

print(str(g(8)) + String1) 

Вы можете оставить это все print(), передавая значения как отдельные аргументы вместо:

String1 = "Is right" 
print(g(8), String1) 

Я удалил ведущее пространство от String1, потому что print() по умолчанию вставляет пробелы между печатаемыми аргументами.

Демо:

>>> String1 = "Is right" 
>>> g = lambda x: x ** 2 
>>> print(g(8), String1) 
64 Is right 

Ваша вторая попытка пытался переместить конкатенации к g лямбда; в этом случае вам придется повернуть результат x ** 2 в строку сначала:

g = lambda x: str(x ** 2) + " Should be right!"