写一个程序帮我做数学作业,但它不起作用

2024-10-04 09:31:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我的程序的一部分根据用户的输入显示n个素数,但不管我输入什么,它只打印“1”

def listPrimeNumbers():
    print("List Prime Numbers")
    print("------------------")
    print("Enter how many prime numbers you want displayed")
    print("Type in '0' to go back to the Main Menu")
    print("\n"*10)

    amountOfNumbers = int(input("Amount of Numbers --> "))

    print("\n"*10)
    for i in range(1, amountOfNumbers):
        prime = True
        for i in range(2,i):
            if (num%i==0):
                prime = False
        if prime:
            print(i)

    print("\n"*10)
    print("Type '0' to try again and '1' to go to the main menu")
    print("\n"*10)

    choice = int(input("Choice ---> "))

    if choice == 0:
        print("\n"*100)
        listPrimeNumbers()
    elif choice == 1:
        print("\n"*100)
        main()

Tags: thetoingoforinputiftype
2条回答

如果我正确地理解了这个问题,那么代码中就有一个逻辑缺陷,因为即使亚历克斯建议了更正(这是有效的),您也只需要打印出所有的数字,这些数字的素数等于用户输入的值,而不是用户输入的量,这似乎是个问题。你知道吗

例如,给定您的问题,如果用户输入10,我理解您应该打印前10个素数(1,2,3,5,7,11,13,17,19,23),而不是最多10个素数(1,2,3,5,7)

如果我的假设是正确的,代码应该是这样的:

import math

def listPrimeNumbers(n):
    l = int(math.sqrt(n))+1
    if n == 1:
        return True
    for x in range(2, l):
        if (n%x==0):
            return False
    return True

print("List Prime Numbers")
print("         ")
print("Enter how many prime numbers you want displayed")
print("Type in '0' to go back to the Main Menu")
print("\n"*10)

amountOfNumbers = int(input("Amount of Numbers  > "))

counter = 0
n = 0
while (counter < amountOfNumbers):
    n += 1
    if listPrimeNumbers(n) == True:
        counter += 1
        print(n)

我省略了重复这个过程的部分,所以您需要重新运行程序以再试一次

将“for”循环更改为:

    for num in range(1, amountOfNumbers):
    prime = True
    for i in range(2,num):
        if (num%i==0):
            prime = False
    if prime:
        print(num)

num在你的代码中没有定义,我想这就是你的意思。你知道吗

你怎么称呼你的密码?照现在的样子,我跑不了。我通过在底部添加对函数listPrimeNumbers()的调用来运行它。你知道吗

不管怎样,假设你发布的代码是你的全部代码,这就是对我有效的版本:

import sys

def listPrimeNumbers():
    print("List Prime Numbers")
    print("         ")
    print("Enter how many prime numbers you want displayed")
    print("Type in '0' to go back to the Main Menu")
    print("\n"*10)

    amountOfNumbers = int(input("Amount of Numbers  > "))

    print("\n"*10)
    for num in range(1, amountOfNumbers):
        prime = True
        for i in range(2,num):
            if (num%i==0):
                prime = False
        if prime:
            print(num)

    print("\n"*10)
    print("Type '0' to try again and '1' to go to the main menu")
    print("\n"*10)

    choice = int(input("Choice  -> "))

    if choice == 0:
        print("\n"*100)
        listPrimeNumbers()
    elif choice == 1:
        print("\n"*100)
        print 'Bye'
        sys.exit(0)


listPrimeNumbers()

相关问题 更多 >