鱼C论坛

 找回密码
 立即注册
查看: 71|回复: 16

[已解决]关于缩进

[复制链接]
发表于 2020-11-22 10:41:48 | 显示全部楼层 |阅读模式

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

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

x
求大佬解惑:为什么这里是else和for缩进是一样的而不是和 if,为什么和if同一缩进就会变成那样
最佳答案
2020-11-22 11:01:01
是不能写成if-else的,因为
对应x从2遍历到n的所有不满足if的情况,都会输出同一句话“n是一个素数”,
原因在于n得值有外循环决定,而内层for循环,只需要输出一次“n是一个素数”

相反,用for-else语句就能很好的满足条件:
n能整除x时,证明不是素数,顺便打印一个式子,break后,此次for-else循环结束,else也就不执行了
n不能整除x时,是素数,if直接被跳过,for也就执行结束,顺带执行else,打印“n是一个素数”
屏幕截图 2020-11-22 103538.png
屏幕截图 2020-11-22 103327.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2020-11-22 10:55:02 | 显示全部楼层
本帖最后由 逃兵 于 2020-11-22 11:01 编辑

这个是 for else 语句

如果for循环正常结束,else中语句执行。如果break,else中的语句不执行。

可以参考一下 @heidern0612 大佬分享的笔记

【python中for…else和while…else的用法】
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2020-11-22 11:01:01 | 显示全部楼层    本楼为最佳答案   
是不能写成if-else的,因为
对应x从2遍历到n的所有不满足if的情况,都会输出同一句话“n是一个素数”,
原因在于n得值有外循环决定,而内层for循环,只需要输出一次“n是一个素数”

相反,用for-else语句就能很好的满足条件:
n能整除x时,证明不是素数,顺便打印一个式子,break后,此次for-else循环结束,else也就不执行了
n不能整除x时,是素数,if直接被跳过,for也就执行结束,顺带执行else,打印“n是一个素数”
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2020-11-22 16:02:15 | 显示全部楼层
本帖最后由 ebusen 于 2020-11-22 16:06 编辑
昨非 发表于 2020-11-22 11:01
是不能写成if-else的,因为
对应x从2遍历到n的所有不满足if的情况,都会输出同一句话“n是一个素数”,
...


可是   if-else的话有些素数的输出情况为什么会只重复有限多次呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2020-11-22 16:03:56 | 显示全部楼层
本帖最后由 昨非 于 2020-11-22 16:09 编辑
ebusen 发表于 2020-11-22 16:02
可是   if-else的话有些非素数的输出情况为什么会只重复有限多次呢

你说的这个有限多次是指,x从2到n的次数中,除去if成立的情况自然是有限次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2020-11-22 16:07:58 | 显示全部楼层
昨非 发表于 2020-11-22 16:03
因为break跳出了
直接进入下一次for循环,对应x得值变了,自然打印的东西不同了

刚刚打错了我想问的是是素数的情况。。就是图一那种
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2020-11-22 16:10:39 | 显示全部楼层
ebusen 发表于 2020-11-22 16:07
刚刚打错了我想问的是是素数的情况。。就是图一那种

打印的是素数和不是素数(那个式子)的次数之和是x从2遍历到n的次数
自然是有限次啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2020-11-22 16:17:58 | 显示全部楼层
还不明白吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2020-11-22 16:34:13 | 显示全部楼层
ebusen 发表于 2020-11-22 16:07
刚刚打错了我想问的是是素数的情况。。就是图一那种


就比如 :
n=3时,x=2,打印一次是素数,结束  所以一共打印一次

n=5时,x=2时,打印一次素数,x=3时,再一次,x=4时,有一次,结束  所以一共打印3次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2020-11-22 17:57:32 | 显示全部楼层
本帖最后由 ebusen 于 2020-11-22 17:59 编辑
昨非 发表于 2020-11-22 16:34
就比如 :
n=3时,x=2,打印一次是素数,结束  所以一共打印一次


不是不是  我问的是那个图一那个打印素数的语句有些地方会重复打印,但是又只打印了几次而已,不懂这是为什么。就比如‘7是素数’ ‘7是素数’ ‘7是素数’这种重复
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2020-11-22 18:01:41 | 显示全部楼层
ebusen 发表于 2020-11-22 17:57
不是不是  我问的是那个图一那个打印素数的语句有些地方会重复打印,但是又只打印了几次而已,不懂这是 ...

9楼说的就是这个啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2020-11-22 18:02:52 | 显示全部楼层
ebusen 发表于 2020-11-22 17:57
不是不是  我问的是那个图一那个打印素数的语句有些地方会重复打印,但是又只打印了几次而已,不懂这是 ...


n=7时,x=2时,打印一次素数,x=3时,打印第二次,x=4时,打印第三次,到最后x=6,打印第五次结束  所以一共打印5次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2020-11-22 18:05:56 | 显示全部楼层
昨非 发表于 2020-11-22 18:01
9楼说的就是这个啊

啊我明白了谢谢大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2020-11-22 18:06:23 | 显示全部楼层
ebusen 发表于 2020-11-22 18:05
啊我明白了谢谢大佬

终于明白了,在不明白我就自闭了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2020-11-22 18:15:23 | 显示全部楼层
昨非 发表于 2020-11-22 18:06
终于明白了,在不明白我就自闭了

哎都怪我太笨了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2020-11-22 18:17:57 | 显示全部楼层
ebusen 发表于 2020-11-22 18:15
哎都怪我太笨了

不至于不至于
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2020-11-22 19:28:44 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2020-12-5 19:22

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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