if-if-else和if-elif-else在while循环中的行为差异

问题描述 投票:0回答:1

使用'if-if-else'条件时,我无法获得所需的输出。但是,使用'if-elif-else'效果很好。我尝试了跟踪,但是不了解输出差异的原因。我不确定为什么对于'if-if-else'情况仅执行1次后它会爆发,为什么它不像使用'if-elif'时那样表现。

这里是代码:除了在第8行中将'if'替换为'elif'之外,它们完全相同。>

1.if-if-if-else

x = 1                                                
y = 0
while True:
    if (x is not None ) & (y%30!=0):
       y+=1
       x=5
       print("x=",x)
    if y%30==0:               #line8
       print("ENTERED y=",y)
       y-=29
    else:
       break

2.if-elif-else

x = 1
y = 0
while True:
    if (x is not None ) & (y%30!=0):
        y+=1
        x=5
        print("x=",x)
    elif y%30==0:              #line8
        print("ENTERED y=",y)
        y-=29
    else:
        break

以下是输出:

1.if-if-if-else

       ENTERED y= 0
       x= 5

2.if-elif-else

       ENTERED y= 0
       x= 5
       x= 5
       x= 5
       x= 5
       x= 5
       x= 5
       x= 5
       x= 5
       x= 5
       x= 5
       x= 5
       x= 5
       x= 5
       x= 5
       x= 5
       x= 5
       x= 5
       x= 5
       x= 5
       x= 5
       x= 5
       x= 5
       x= 5
       x= 5
       x= 5
       x= 5
       x= 5
       x= 5
       x= 5
       ENTERED y= 0
       x= 5
       x= 5
       x= 5
       x= 5
       ...(prints x=5 for another 29-4 =25 times)
       ENTERED y= 0
       ...(loops endlessly)

使用'if-if-else'条件时,我无法获得所需的输出。但是,使用'if-elif-else'效果很好。我已经尝试了跟踪,但是不了解...

python if-statement while-loop output difference
1个回答
0
投票

当然有区别! elif代表else if。当在if之后有另一个if时,无论您从第一个if获得的结果如何,都会检查第二个if。

© www.soinside.com 2019 - 2024. All rights reserved.