解决此问题,首先要了解两项内容:
(1)if分支和while循环的条件
if分支的条件是i%2==0,即i为偶数,成立时sum自增,而while循环的条件是i小于等于100时执行循环体。
(2)i+=1在if分支内时的程序运行过程
当i的自增(i+=1)写入if分支内时,i的初始值为1,小于等于100,满足了while循环的条件,所以进入循环。但这个i=1无法满足if分支的条件,即i为偶数,所以不进入if分支,第一遍的while循环结束,i仍为1,满足条件,进入第二次。
也就是说,在每一遍while循环里,i为1的值不会改变,永远满足while的条件,永远不满足if的条件。而改变i的值的语句在if分支中,若不进入if分支,i将一直保持初始值1,使得while循环的条件永远成立,该程序无穷。
在上述内容的基础上,我们可以下定结论:
所以,将i+=1写在if分支内并不是“不能再次进入while循环”,而是满足一系列条件,从而使while循环无限制地执行下去(直到内存配额或电量耗尽),而永远不进入if分支。
也可以使用一个小测试来理解上述结论与过程:
sum_ = 0
i = 1
while i <= 100:
if i % 2 == 0:
sum_ += i
i += 1
print('in if')
print('in while')
执行这个程序,你将得到无穷无尽的'in while'输出,而没有'in if'输出,这代表着程序一直在while里打转转,而没有进入if。
记得使用Ctrl+C的组合键退出程序哦。
另:祝你考试顺利,正常发挥
因为 while 需要用到 i,你写在 while 里面 while 本身不知道有i啊
可以呀,然后if是条件判断,不是循环
不知道你这个问题是否已经解决, 如果还没有解决的话:解决方案:
在if循环中为变量i赋值后,再次进入while循环可能会导致程序执行逻辑出现问题。这是因为在每次循环中,变量i的值都会被改变,进入if循环后i的值可能会改变,使得循环条件不成立,从而跳出while循环。而变量sum的值并不会影响循环条件,因此可以多次进入while循环。
为了避免这种问题发生,可以采用以下两种解决方案:
如果在循环中必须要为变量赋值,可以将赋值操作放在while循环之前。
示例代码如下:
i = 0
while i < 10:
print(i)
i += 1
if i == 5:
j = i
print(j)
可以为if循环中赋值的变量使用不同的变量名,以避免与while循环中使用的变量名冲突。
示例代码如下:
i = 0
while i < 10:
print(i)
i += 1
if i == 5:
temp_i = i
print(temp_i)
以上就是解决问题的两个方案,根据具体情况选择即可。