python求质数方法
本帖最后由 shark8890 于 2021-7-7 14:33 编辑这两个代码都是求质数,但就是else位置稍微变化,下面贴出的结果发生很大变化。
有问题想请教,正常来说,在IDLE里写完if,else位置是和if对齐的,也就是第二种方式。请问第一种如何理解呢?求解答。
num=[];
i=2
for i in range(2,101):
j=2
for j in range(2,i):
if(i%j==0):
break
else:
num.append(i)
print(num)
num=[];
i=2
for i in range(2,101):
for j in range(2,i):
if i%j == 0:
break
else:
num.append(i)
print(num)
第一种方法中的else,对应的是for j in range(2,i):,只有在这个for循环正常运行完之后,才会转到else中。例如在本例中如果if(i%j==0):条件成立,使用break跳出这个for循环,else就不会执行。第二种方法就是你所说的对应if。 第一种是循环体内,一直执行 if 语句直至执行完以后跳出 for 循环,将每个质数打印1次。
而第二种 else 和if 语句并列,每执行完一次 if 语句,都会添加 i
比如:质数5除完2,3,4指令便执行3次,打印3个5,以此类推...... iltifa 发表于 2021-7-7 18:10
第一种方法中的else,对应的是for j in range(2,i):,只有在这个for循环正常运行完之后,才会转到else中。 ...
谢谢解答。
那这样是不是else和if就不是一对了,else反而和for是一对了?
这算是python的特性吗?C语言这些好像都不能直接这样实现。 飞花落尽 发表于 2021-7-7 19:31
第一种是循环体内,一直执行 if 语句直至执行完以后跳出 for 循环,将每个质数打印1次。
而第二种 else...
谢谢解答,只是还未能完全接受理解else和if裂开了{:5_100:} for 和 else 可以是一对,只有内部循环完毕才会跳出执行else循环 shark8890 发表于 2021-7-8 15:12
谢谢解答,只是还未能完全接受理解else和if裂开了
else 可以和 if/elif 、 for/while 、try 搭配
if / elif 搭配时,只有在不满足 if 以及全部的 elif 后会执行 else 下的代码块
for / while 搭配时,只有在 循环 正常终止,即可以理解为不遇到 break 就会执行 else 下的代码块
try 搭配时,只有在 try 中不捕获异常时,即可执行 else 下的代码块
综上搭配过程中,一定是同缩进下才属于搭配
页:
[1]