鱼C论坛

 找回密码
 立即注册
查看: 1865|回复: 4

[已解决]重复输出问题

[复制链接]
发表于 2021-6-9 14:29:56 | 显示全部楼层 |阅读模式

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

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

x
求指定区间所有的素数

  1. lower = int(input('输入区间最小值: '))
  2. upper = int(input('输入区间最大值: '))
  3. for num in range(lower, upper+1):
  4.     if num > 1:
  5.         for i in range(2, num):
  6.             if num%i == 0:
  7.                 break
  8.             else:
  9.                 print(num, end=' ')
  10.                
复制代码



为什么这个程序会重复输出啊?
最佳答案
2021-6-9 14:37:23
把else往前退一个缩进单位试试。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-9 14:37:23 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
把else往前退一个缩进单位试试。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-9 14:46:15 | 显示全部楼层
qq1151985918 发表于 2021-6-9 14:37
把else往前退一个缩进单位试试。

嗯,是可以了。不过我看又看到一个,在if else之间又加了一个elif i <(num-1):continue,也可以达到这个效果,就是不知道为啥?加的这句又是什么意思呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-9 14:46:22 | 显示全部楼层
2楼说的对
  1. lower = int(input('输入区间最小值: '))
  2. upper = int(input('输入区间最大值: '))
  3. for num in range(lower, upper+1):
  4.     if num > 1:
  5.         for i in range(2, num):
  6.             if num%i == 0:
  7.                 break
  8.         else:
  9.             print(num, end=' ')
  10.                
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-9 16:22:46 | 显示全部楼层
江湖散人 发表于 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  
这是正确的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-23 01:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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