鱼C论坛

 找回密码
 立即注册
查看: 1272|回复: 5

[已解决]第六讲课后题求阶梯的问题

[复制链接]
发表于 2020-11-24 15:25:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 Marain 于 2020-11-24 15:26 编辑
  1. x = 7
  2. i = 1
  3. flag = 0

  4. while i <= 100:
  5.     if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):
  6.         flag = 1
  7.     else:
  8.         x = 7 * (i+1) # 根据题意,x一定是7的整数倍,所以每次乘以7
  9.     i += 1

  10. if flag == 1:
  11.     print('阶梯数是:', x)
  12. else:
  13.     print('在程序限定的范围内找不到答案!')
复制代码

为什么第十行i +=1 这一行代码要与else对齐时程序才能运行出结果,而缩进后与第九行对齐时不能得到结果,求大神解答
最佳答案
2020-11-24 15:32:39
python对代码的缩进要求非常严格,同一个级别代码块的缩进量必须一样

与else对齐时,说明它在while条件下执行,每执行一次while,就会执行一次i+=1

当它与第九行对齐时,说明它在else条件下执行,只有触发else条件时,才会执行一次i+=1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-24 15:32:39 | 显示全部楼层    本楼为最佳答案   
python对代码的缩进要求非常严格,同一个级别代码块的缩进量必须一样

与else对齐时,说明它在while条件下执行,每执行一次while,就会执行一次i+=1

当它与第九行对齐时,说明它在else条件下执行,只有触发else条件时,才会执行一次i+=1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-24 15:56:12 | 显示全部楼层
       Python 没有语句括号,对语句块识别的唯一依据就是缩进级别,所以,一般在 for、while、if 、class 等语句后面都有相应的冒号和语句缩进。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-24 16:23:37 | 显示全部楼层
逃兵 发表于 2020-11-24 15:32
python对代码的缩进要求非常严格,同一个级别代码块的缩进量必须一样

与else对齐时,说明它在while条件 ...

感谢老哥 明白了
如果i+=1 与else对齐的话,当i=100时,只执行if条件,i不会再增加,程序是无法跳出while循环的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-24 16:35:52 | 显示全部楼层
Marain 发表于 2020-11-24 16:23
感谢老哥 明白了
如果i+=1 与else对齐的话,当i=100时,只执行if条件,i不会再增加,程序是无法跳出whil ...

不是的,如果i+=1与else对其的话,当x=119时,只执行if条件,i不会再增加,程序是无法跳出while
我们修改下代码,做一下测试
  1. x = 7
  2. i = 1
  3. flag = 0

  4. while i <= 100:
  5.     if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):
  6.         print('现在i=%s,x=%s,执行的是if语句'%(i,x))

  7.         flag = 1
  8.         
  9.     else:
  10.         print('现在i=%s,x=%s,执行的是else语句'%(i,x))
  11.         x = 7 * (i+1) # 根据题意,x一定是7的整数倍,所以每次乘以7
  12.         i += 1
  13.         

  14. if flag == 1:
  15.     print('阶梯数是:', x)
  16. else:
  17.     print('在程序限定的范围内找不到答案!')
复制代码

  1. 现在i=1,x=7,执行的是else语句
  2. 现在i=2,x=14,执行的是else语句
  3. 现在i=3,x=21,执行的是else语句
  4. 现在i=4,x=28,执行的是else语句
  5. 现在i=5,x=35,执行的是else语句
  6. 现在i=6,x=42,执行的是else语句
  7. 现在i=7,x=49,执行的是else语句
  8. 现在i=8,x=56,执行的是else语句
  9. 现在i=9,x=63,执行的是else语句
  10. 现在i=10,x=70,执行的是else语句
  11. 现在i=11,x=77,执行的是else语句
  12. 现在i=12,x=84,执行的是else语句
  13. 现在i=13,x=91,执行的是else语句
  14. 现在i=14,x=98,执行的是else语句
  15. 现在i=15,x=105,执行的是else语句
  16. 现在i=16,x=112,执行的是else语句
  17. 现在i=17,x=119,执行的是if语句
  18. 现在i=17,x=119,执行的是if语句
  19. 现在i=17,x=119,执行的是if语句
  20. 现在i=17,x=119,执行的是if语句
  21. 现在i=17,x=119,执行的是if语句
  22. 现在i=17,x=119,执行的是if语句
  23. 现在i=17,x=119,执行的是if语句
  24. 现在i=17,x=119,执行的是if语句
  25. ...
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-24 18:33:40 | 显示全部楼层
逃兵 发表于 2020-11-24 16:35
不是的,如果i+=1与else对其的话,当x=119时,只执行if条件,i不会再增加,程序是无法跳出while
我们修 ...

奥奥  明白了老哥  多谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 20:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表