重复输出问题
求指定区间所有的素数lower = int(input('输入区间最小值: '))
upper = int(input('输入区间最大值: '))
for num in range(lower, upper+1):
if num > 1:
for i in range(2, num):
if num%i == 0:
break
else:
print(num, end=' ')
为什么这个程序会重复输出啊? 把else往前退一个缩进单位试试。 qq1151985918 发表于 2021-6-9 14:37
把else往前退一个缩进单位试试。
嗯,是可以了。不过我看又看到一个,在if else之间又加了一个elif i <(num-1):continue,也可以达到这个效果,就是不知道为啥?加的这句又是什么意思呢? 2楼说的对
lower = int(input('输入区间最小值: '))
upper = int(input('输入区间最大值: '))
for num in range(lower, upper+1):
if num > 1:
for i in range(2, num):
if num%i == 0:
break
else:
print(num, end=' ')
江湖散人 发表于 2021-6-9 14:46
嗯,是可以了。不过我看又看到一个,在if else之间又加了一个elif i
我让你把 else 往前一个缩进就是因为这个,只有代码在遍历了 range(2, num) 之后仍然没有执行 break 才会执行 else 这里的 else 所对应的不是 if 而是 for
而你说的加 elif i <(num-1):continue 其实是从另一个方面帮助程序完成整个range(2, num)的遍历
当当前循环没有 break 且 i < num - 1 的情况下会跳过,所以代码就有了两种结果,
要么中途 break要么遍历完整个range(2, num),这样执行的 else 对应的是 if
这是正确的
页:
[1]