Python 2.7 为什么我会得到;无”;每次循环执行一次?

Python 2.7 为什么我会得到;无”;每次循环执行一次?,python-2.7,Python 2.7,函数diff不返回任何内容,这就是为什么打印diff(z)只打印无。应该是这样的 def diff(n): x = n**(1.0/2) y = (n-2)**(1.0/2) differ = x-y return differ z = 2 while z >= 0 and z <= 100: print diff(z) z = z+1 def diff(n): x=n**(1.0/2) y=(n-2)**(1.0/2) 差=x-y

函数
diff
不返回任何内容,这就是为什么
打印diff(z)
只打印
。应该是这样的

def diff(n):
    x = n**(1.0/2)
    y = (n-2)**(1.0/2)
    differ = x-y
    return differ

z = 2
while z >= 0 and z <= 100:
    print diff(z)
    z = z+1
def diff(n):
x=n**(1.0/2)
y=(n-2)**(1.0/2)
差=x-y
回报不同
z=2

正如注释正确指出的那样,z>=0和z,
diff
没有明确的返回值。这不会太糟糕,因为
diff
具有打印所需号码的预期副作用。但是,由于您要求python在while循环中打印
diff
的结果,因此每次要求
diff
给出返回值时,您都会得到
None
。您可以通过将diff更改为无副作用,而是返回值(只需将
print
更改为
return
)或调用函数以了解其副作用,但不尝试打印其返回值来解决此问题(去掉while循环中的
print
语句)


希望这能帮助您打印
diff
的返回值。由于
diff
没有显式返回任何内容,因此它隐式返回一个
None
。@Nirbhay:函数首先从循环中调用,但直到执行
print different
后才得到任何内容,最后,函数没有返回任何内容,因此您得到
None
。这非常有用,而且可以正常工作!!非常感谢。