python课后作业答疑
为什么i=i+1不是放在else里面? 如果把它放到里面就会报错答案程序
x = 7
i = 1
flag = 0
while i <= 100:
if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):
flag = 1
else:
x = 7 * (i+1) # 根据题意,x一定是7的整数倍,所以每次乘以7
i=i+1
if flag == 1:
print('阶梯数是:', x)
else:
print('在程序限定的范围内找不到答案!')
那是因为无论if还是else i都要自增 放在else里面不会报错,只是死循环而已
如果想写在else中,if里面也要写一个,满足无论进哪个条件i都会自增
x = 7
i = 1
flag = 0
while i <= 100:
if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):
flag = 1
i=i+1
else:
x = 7 * (i+1) # 根据题意,x一定是7的整数倍,所以每次乘以7
i=i+1
if flag == 1:
print('阶梯数是:', x)
else:
print('在程序限定的范围内找不到答案!')
本帖最后由 白two 于 2021-8-16 19:30 编辑
直接说进入循环后的流程吧:
第一次循环:i = 1, x = 7,执行 else , x = 14, i = 2
第二次循环:i = 2, x = 14,执行 else , x = 21, i = 3
总共执行16次,执行到第17次:
第十七次循环:i = 16, x = 112,执行 else , x = 119, i = 17
下一次循环,执行 if , flag = 1,此时 x = 119, i = 17,
如果 i+=1 写在 else 里面的话,那下一次循环依旧执行 if , i 依旧等于17,且会一直等于17,就会一直执行循环
非要把 i+=1 写在else里面的话,可以再 if 里面加一个 break ,满足条件就直接跳出循环
x = 7
i = 1
flag = 0
while i <= 100:
if (x % 2 == 1) and (x % 3 == 2) and (x % 5 == 4) and (x % 6 == 5):
flag = 1
break
else:
x = 7 * (i + 1)# 根据题意,x一定是7的整数倍,所以每次乘以7
i = i + 1
if flag == 1:
print('阶梯数是:', x)
else:
print('在程序限定的范围内找不到答案!')
页:
[1]