代码:
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试过但是它仍然有问题吗?
另外在修复时,请解释固定代码如何工作:)我不想复制固定的行
答案 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!"