连续if 加一个else 为何不能运行
本帖最后由 paulwang 于 2022-9-22 12:17 编辑下面的程序没错但是运行后并没有结果显示为什么
a=1
while a<=1000:
if a%2==1:
if a%3==2:
if a%4==3:
if a%5==4:
if a%6==5:
if a%7==0:
print(a)
else:
a=a+1 你这个程序,a+=1只有满足你所有if条件(除了最后一个)才会运行,因为else的缩进放到了最后一条if的下面。
一开始a的值是1;不满足第一个if,就不会运行后面的所有东西了,a的值不变,进入死循环了。
看你这程序的意思,应该是所有条件都满足才print,那你可以用and连接条件;或者麻烦点每个if条件*同级别*都加一个else
很明显,死循环了
你的第一个 if 条件,在第一次循环时候条件成立,进入该 if 条件下的代码块,开始判断第二个 if 条件语句
第二个 if 条件判断语句很显然 a % 3 = 1 % 3 = 1 不等于 2 所以不成立,又因为此 if 下没有 else 语句进行执行
此次循环所有可执行代码都执行了,到循环结构末尾,准备开始下次循环,下次循环 a 还是为 1 所以同样前面的步骤,进入死循环
你的代码应该改成这样,参考代码:
a = 1
while a <= 1000:
if a % 2 == 1:
if a % 3 == 2:
if a % 4 == 3:
if a % 5 == 4:
if a % 6 == 5:
if a % 7 == 0:
print(a)
a = a + 1
执行结果:
119
539
959
本帖最后由 jackz007 于 2022-9-22 12:50 编辑
1、连续递进式 if 实际上就是同时满足,就是 and 操作符要干的事情
2、a = a + 1 是每次循环都必须要做的事情,不可以条件执行
3、判断条件中并没有 a%4 == 3 这一条
a = 1
while a <= 1000:
if a % 2 = 1 and a % 3 == 2 and a % 5 == 4 and a % 6 == 5 and a % 7 == 0:
print(a)
a += 1
简化版
for a in range(7 , 1000 , 7):
if a % 2 = 1 and a % 3 == 2 and a % 5 == 4 and a % 6 == 5:
print(a) 谢啦 ,后面自己已经我想通了, 我是小白刚学,所以才问这个问题。
不过python 为何不报错呢, 因为只是执行不下去,其实是没错的对吧 paulwang 发表于 2022-9-22 12:52
谢啦 ,后面自己已经我想通了, 我是小白刚学,所以才问这个问题。
不过python 为何不报错呢, 因为只是执 ...
死循环不会报错,实际上程序一直在执行
Twilight6 发表于 2022-9-22 12:30
很明显,死循环了
你的第一个 if 条件,在第一次循环时候条件成立,进入该 if 条件下的代码块,开始判 ...
我还想了解下如果下面这样也算死循环吗? 第一个条件复合第二个条件不符合的话就没法执行下去了,我的理解对吧
a=1
while a<=1000:
if a%2==1:
if a%3==2:
if a%4==3:
if a%5==4:
if a%6==5:
if a%7==0:
print(a)
else:
a=a+1 paulwang 发表于 2022-9-22 12:58
我还想了解下如果下面这样也算死循环吗? 第一个条件复合第二个条件不符合的话就没法执行下去了,我的理 ...
对的,当你满足第一个条件的时候,就不会执行这个else了,其他地方又没有改变a的值的地方,就会陷入死循环。 paulwang 发表于 2022-9-22 12:58
我还想了解下如果下面这样也算死循环吗? 第一个条件复合第二个条件不符合的话就没法执行下去了,我的理 ...
是的,同个缩进下的 if - else 结构才会必须执行 if 或 else 中代码块的其中一个
你这个代码 else 和 第一个 if 同缩进,所以,只有在第一个 if 不满足条件时执行 else
if
if
if
if
else
#只有这里才搭配 if
elif(else+if)
elif(else+if)
elif(else+if)
else
#现在就是一个整体了
页:
[1]