用while循环语句及continue语句打印10以内的基数
我尝试用while循环语句及continue语句打印10以内的基数,程序如下:i = 0
while i < 10:
if i % 2 == 0:
i += 1
continue
print(i)
我的逻辑是当i一开始等于0时进入while循环语句,此时i % 2 等于0, i += 1后i变成1,此时运行continue语句后打印i值,然后回到whilei<10进行下一轮的循环.但这个程序运行后却一直打印1,麻烦大神指点一下,谢谢!
本帖最后由 jackz007 于 2024-11-10 14:37 编辑
i = 0
while i < 10:
if i % 2 == 0:
i += 1 # 循环变量必须无条件更新,不可以条件性更新
continue
print(i) # 需要在循环中打印信息的 print() 语句必须纳入循环范围
当 i = 1 的时候,会陷入死循环,这样改:
i = 0
while i < 10:
if i % 2 : # 如果 i 为奇数
print(i) # 便打印之
i += 1 # 注意此句的缩进位置,循环变量必须无条件更新
当 i 是偶数的时候,不管它就好了,不需要 continue 语句 你的程序有一个小问题:`print(i)`语句没有缩进到`while`循环内部,所以它只会在循环结束后执行一次。你需要将`print(i)`放在`while`循环内,并在`continue`语句之后增加`i += 1`,以确保每次循环都能正确地更新`i`的值。以下是修正后的代码:
i = 0
while i < 10:
if i % 2 == 0:
i += 1
continue
print(i)
i += 1
这样,程序会打印出10以内的奇数:1, 3, 5, 7, 9。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 jackz007 发表于 2024-11-10 14:23
当 i = 1 的时候,会陷入死循环,这样改:
当 i 是偶数的时候,不管它就好了,不需要 ...
谢谢你的讲解!但请教一下,你这里的if i % 2 :应该是代表着如果i能被2整除时才会执行内部的print(i)语句,应该打印出来的是偶数,但为何打印出来的却是基数? LEEFEI571 发表于 2024-11-10 14:39
谢谢你的讲解!但请教一下,你这里的if i % 2 :应该是代 ...
在你的代码中,`if i % 2 == 0:`这一行的意思是“如果`i`能被2整除”,也就是说`i`是偶数。`continue`语句会导致循环跳过当前循环的剩余部分,直接进入下一个循环迭代。这意味着当`i`是偶数时,`print(i)`不会被执行,因为循环会在`continue`之后立即开始下一次迭代。
所以逻辑是这样的:
- 如果`i`是偶数(`i % 2 == 0`为真),程序执行`i += 1`,然后`continue`跳到下一个循环迭代,`print(i)`不执行。
- 如果`i`是奇数,程序不会执行`continue`,而是直接执行`print(i)`,然后`i += 1`,输出奇数。
这就是为什么打印出来的是奇数,而不是偶数。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 本帖最后由 jackz007 于 2024-11-10 14:50 编辑
LEEFEI571 发表于 2024-11-10 14:39
谢谢你的讲解!但请教一下,你这里的if i % 2 :应该是代表着如果i能被2整除时才会执行内部的print(i)语句, ...
if i % 2 的意思是,如果 i 对 2 取的余不为 0,也就是如果 i 为奇数,因为,只有奇数对 2 取余才不为 0
数值和布尔值之间的对应关系是:
0 - False
!= 0 - True
就是说,0 对应于 False,非 0 对应于 True,这就是在对整型数取布尔值时所遵循的规则。 jackz007 发表于 2024-11-10 14:43
if i % 2 的意思是,如果 i 对 2 取的余不为 0,也就是如果 i 为奇数,因为,只有奇数对 2 取余 ...
所以也就是说 if i % 2:的全写是if i % 2 != 0:,是这意思吧? LEEFEI571 发表于 2024-11-10 15:22
所以也就是说 if i % 2:的全写是if i % 2 != 0:,是这意思吧?
没错! jackz007 发表于 2024-11-10 15:22
没错!
学习了,谢谢指点!
页:
[1]