【问题标题】:Python Prime Numbers LoopPython素数循环
【发布时间】:2015-01-08 18:34:30
【问题描述】:

运行此代码时,我一直遇到错误。我想知道出了什么问题。该代码必须能够读取单词和整数并重复提示(请输入整数> = 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)

【问题讨论】:

  • 错误是什么?
  • 考虑到您一直在重复直到数字不
  • 您需要调用脚本底部的函数。在底部添加prime_number(),不要缩进
  • @DatOneGuy:最后一条评论太模糊了,无法理解。 “当我使用 def 时”是什么意思?如果程序终止,你是如何陷入循环的?你想做什么来打破它?
  • @DatOneGuy:如果你抱怨无论你输入什么,它都会一直告诉你输入另一个数字,我在第一条评论中已经解释过了。如果您抱怨程序终止而没有做任何可见的事情,甚至要求一个数字,rpattiso 解释说。

标签: python while-loop primes function


【解决方案1】:

你需要进入这个函数。这通常在 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()        

只是一些一般性的建议。我会将输入逻辑与素数计算逻辑分开。

【讨论】:

    【解决方案2】:
    1. 正如@rpattiso 所述,您没有调用该方法,并且
    2. while 条件有问题

    这应该可行:

    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()
    

    【讨论】:

    • 我不知道为什么,但是当我尝试运行它时,我什么也没得到。
    猜你喜欢
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-17
    • 2016-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多