Python For i in range(len(str)):最后一次迭代打印无

Yi *_*ank 2 python string for-loop

def fun(str):
    for i in range(len(str)):
        print(i)

string = 'abc'

print(fun(string))
Run Code Online (Sandbox Code Playgroud)

打印结果是

0
1
2
None
Run Code Online (Sandbox Code Playgroud)

如果我改变

for i in range(len(str)-1):
Run Code Online (Sandbox Code Playgroud)

最后的结果仍然是 None

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

Mur*_*nik 5

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

为了使长话短说-不叫printfun,只需要调用fun

string = 'abc'

fun(string) # Here
Run Code Online (Sandbox Code Playgroud)