python - 我的输出不断重复自己?(Python)
问题描述
所以我正在创建这个函数,让用户输入一个大于 2 的数字。然后代码应该打印从 2 开始到用户输入的数字结束的所有素数。
所以这是我的代码,它可以工作(耶!)
def enterNumber():
number = int(input("Enter a number greater than 2"))
lower = 2
upper = number
for number in range (lower, upper):
if number > 2:
for i in range (2, number):
if (number % i) == 0:
break
else:
if (number % i) != 0:
print(number)
enterNumber()
但是,如果用户输入 18,这是我的输出
"Enter a number greater than 2"
user puts "18"
output: 3
5
5
5
7
7
7
7
7
9
11
11
11
11
11
11
11
11
11
13
13
13
13
13
13
13
13
13
13
13
15
17
17
17
17
17
17
17
17
17
17
17
17
17
17
17
为什么我的输出会重复?任何建议将不胜感激谢谢!
解决方案
你的问题在这里:
for i in range (2, number):
if (number % i) == 0:
break
else:
if (number % i) != 0:
print(number)
在循环else
内,表示每次找到非除数时都要打印数字。例如,对于 number = 11,您将打印2-1011
的值。i
在完成循环之前,您不知道该数字是否为质数。您的打印必须在循环之后,在正常退出时进行。一个经常被遗忘的语言特性是循环可以有一个else
正是为了这个目的。
for i in range (2, number):
if (number % i) == 0:
break
else:
print(number)
输出:
Enter a number greater than 218
3
5
7
11
13
17
推荐阅读
- python - 将文本从 jira 转换为 markdown
- powerbi - 切片器的 Power BI 默认选项
- r - 循环列表中的数据帧
- javascript - 停止传播所有事件
- amazon-web-services - 选择一个特定的实例来放置一个 ECS 服务
- c# - 尝试从 .net core dll 创建程序集时出现 SQL Server 错误
- laravel - 如何在 Laravel 中安装版本依赖要求高于 Laravel 要求的包?
- python - wxPython:带有图标和文本的 PropertyGridManager 工具栏
- oracle - 精确提取在过程中返回的行数超过了请求的行数
- css - node-sass 无效的 CSS