【问题标题】:Python For i in range(len(str)): last iteration prints NonePython For i in range(len(str)):最后一次迭代打印无
【发布时间】:2017-11-05 05:24:20
【问题描述】:
def fun(str):
    for i in range(len(str)):
        print(i)

string = 'abc'

print(fun(string))

打印结果是

0
1
2
None

如果我改变了

for i in range(len(str)-1):

最后的结果还是None

这是为什么? 我该如何阻止它?

【问题讨论】:

    标签: python string for-loop


    【解决方案1】:

    当您调用print(fun('abc')) 时,您首先调用fun,它确实打印123,一旦fun 完成,您打印它的返回值。由于您没有显式返回任何内容,因此 Python 会为您隐式返回 None

    长话短说-不要在fun上拨打print,只需拨打fun即可:

    string = 'abc'
    
    fun(string) # Here
    

    【讨论】:

      【解决方案2】:

      您从fun 函数的打印语句中获得0, 1, 2,而None 正在由以下人员打印:

      print(fun(string))
      

      因为,默认情况下,python 函数返回None,这就是你在这里得到它的原因。不用打印语句直接调用即可。

      fun(string)
      

      【讨论】:

      • 啊,我明白了。我正在使用 print 来调试 ctci 中的算法,但它一直让我失望,哈哈。谢谢
      【解决方案3】:

      这是因为你使用 print(fun(string)) 并且你的函数中有一个 print 语句。所以它会在你的函数内部执行打印,并在函数中执行另一个没有返回值的打印,所以没有。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-11
        相关资源
        最近更新 更多