理解Python函数

lee*_*d01 -2 python

目前我有这个功能:

x = 0
limit = 10
y = 7
def basic(x):
    global y
    while x <= limit:
        if x == 0 or 1:
            y += 1
            basic(x+1)
            return x
        else:
            y += 2
            basic(x+1)
            return x

basic(x)
print(y)
Run Code Online (Sandbox Code Playgroud)

当我打印y时它返回18,这意味着它被卡在if语句中并且不会转到else语句但x确实停止在极限,因此y = 18.我在网上查找了各种来源,但我无法得到一个确切的清楚可视化我的问题.

小智 5

你的问题可能是

if x == 0 or 1:
Run Code Online (Sandbox Code Playgroud)

实际上,这将首先测试x == 0,如果x!= 0将测试1是否为True.由于1始终为True,因此该分支将始终执行.

你可能想要做

if x == 0 or x == 1:
Run Code Online (Sandbox Code Playgroud)