【问题标题】:Unsupported operand type(s) for +: 'NoneType' and 'str' and 'int'+ 不支持的操作数类型:“NoneType”和“str”和“int”
【发布时间】:2014-11-15 07:07:40
【问题描述】:

代码:

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 试过了,但还是有问题?

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

【问题讨论】:

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


    【解决方案1】:

    您将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!"
    

    【讨论】:

      猜你喜欢
      • 2016-09-07
      • 2018-04-16
      • 2022-07-27
      • 2014-06-15
      • 2018-07-07
      • 2023-01-04
      • 2017-12-27
      • 2014-03-31
      • 2021-05-23
      相关资源
      最近更新 更多