简体   繁体   English

Python素数循环

[英]Python Prime Numbers Loop

When running this code, I keep having an error. 运行此代码时,我一直出错。 I would like to know what is wrong. 我想知道哪里出了问题。 The code has to be able to read words and integers and repeat the prompt(Please enter an integer >= 2: ') until it is greater or equal to 2. Thanks in advance. 该代码必须能够读取单词和整数并重复提示(请输入整数> = 2:'),直到它大于或等于2。在此先感谢您。

def prime_number():

    prime_num = input('Please enter an integer >= 2: ')

    while not(prime_num.isdigit() and int(prime_num)<1):

        prime_num = input('Please enter an integer >= 2: ')

    for i in range(2,int(prime_num)+1):
        for x in range(2,i):
            if i%x == 0:
                break
        else:
            print (i)
  1. As mentioned by @rpattiso, you are not invoking the method and 如@rpattiso所述,您未调用该方法,并且
  2. You while condition is buggy while条件是越野车

This should work: 这应该工作:

def prime_number():
    prime_num = input('Please enter an integer >= 2: ')

    while not (prime_num.isdigit() and not int(prime_num)<1):
        prime_num = input('Please enter an integer >= 2: ')

    for i in range(2,int(prime_num)+1):
        for x in range(2,i):
            if i%x == 0:
                break
        else:
            print (i)
prime_number()

You need to enter the function. 您需要输入功能。 This is typically done in python with: 通常使用以下命令在python中完成:

def prime_number():
    prime_num = input('Please enter an integer >= 2: ')    
    while not(prime_num.isdigit() and int(prime_num)<1):    
        prime_num = input('Please enter an integer >= 2: ')

    for i in range(2,int(prime_num)+1):
        for x in range(2,i):
            if i%x == 0:
                break
        else:
            print (i)


if __name__ == "__main__":
    prime_number()        

Just some advice in general. 一般而言,只是一些建议。 I would separate the input logic from the prime number calculation logic. 我将输入逻辑与质数计算逻辑分开。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM