+:' NoneType'不支持的操作数类型和' str'和' int'

时间:2014-09-21 02:01:03

标签: python string python-3.x int typeerror

代码:

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试过但是它仍然有问题吗?

另外在修复时,请解释固定代码如何工作:)我不想复制固定的行

1 个答案:

答案 0 :(得分: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 lambda;在这种情况下,您必须先将x ** 2的结果转换为字符串:

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