【问题标题】:why there is 'None' print out in my python code [duplicate]为什么在我的python代码中打印出“无”[重复]
【发布时间】:2015-08-03 19:18:10
【问题描述】:

嗨:我正在测试这样的递归函数:

def countdown(n):
    if n == 1:
        print 1
    elif n > 1:
        print countdown(n - 1), '\n', n
    else:
        pass

函数是从$n$倒数到$1$。但为什么我在输出中得到“无”?

In [2]: countdown(4)
1
None  
2
None 
3
None 
4

谢谢。

【问题讨论】:

  • 为了解决这个谜题,在你怀疑会产生意外输出的地方之前和之后添加一些输出。这样,圈出导致意外输出的实际代码。使用该技术,很容易发现第二个print 输出两行,其中第一行是repr(None)。由于第一行中唯一的内容是countdown(n - 1),因此很明显打印该函数的输出会打印“无”。

标签: python


【解决方案1】:

当函数完成而不返回任何内容时,它会隐式返回None。您的函数没有return 语句,因此print countdown(n-1) 将打印None

【讨论】:

  • Nones 来自函数中的 print 语句,而不是解释器。至少问题中显示的那些。
【解决方案2】:

您正在打印 countdown 返回的内容,但它没有返回任何内容。

【讨论】:

    【解决方案3】:

    您的递归函数没有return 语句。因为函数总是必须返回一些东西,所以默认是返回None

    从递归函数调用中删除print 语句,并将其放在单独的行:

    elif n > 1:
        countdown(n - 1)
        print n
    

    请注意,else: pass 块是完全多余的。您可以省略该部分,您没有必须拥有else 声明。

    【讨论】:

      猜你喜欢
      • 2013-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-10
      • 2023-03-24
      • 2023-01-11
      • 2021-01-05
      相关资源
      最近更新 更多