2014-09-21 70 views
0

代码:不支持的操作数类型(一个或多个)为+: 'NoneType' 和 'STR' 和 '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: 我尝试添加这个:

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' 

我INT尝试过了,STR,但它仍然有问题?

而且固定时,请说明固定的代码是如何工作:)我不想只是复制固网

回答

3

您加起来的print()str(),但print()回报None结果。

你可能想打印加入g(8)str()而不是结果,但你必须打开的g(8)的返回值转换成字符串太:

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

注收盘)为安置print()功能!

是没有必要的第二str()电话,因为String1已经是一个字符串:

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

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

您可以通过传递中的值作为单独的参数,而不是离开这一切print()

我从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!" 
相关问题