首页 > 解决方案 > 我的输出不断重复自己?(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

为什么我的输出会重复?任何建议将不胜感激谢谢!

标签: pythonfor-loop

解决方案


你的问题在这里:

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

推荐阅读