如何使用 While 循环根据输入变量重复代码

How to use a While Loop to repeat the code based on the input variable

我在尝试使用 while 函数进行循环时遇到了困难。 基本上我希望代码向我显示从 0 到我在输入中写入的数字的所有素数。 然后,问一个问题我是否想再做一次(如果是,则从头开始重复代码)或者是否不退出。 我现在如何得到它只是无限地重复最后的结果。 我用 while 循环在网上找到的所有结果都没有真正解释如何重复代码的某个部分。 对于这些东西,我一点都没有受过教育,所以如果这是一个愚蠢的问题,请原谅我。

# Python program to print all primes smaller than or equal to
# n using Sieve of Eratosthenes

def start(welcome):
    print ("welcome to my calculation.")

value = input("number?:\n")
print(f'you have chosen: {value}')
value = int(value)

def SieveOfEratosthenes(n):
    prime = [True for i in range(n + 1)]
    p = 2
    while (p * p <= n):
        if (prime[p] == True):
            for i in range(p ** 2, n + 1, p):
                prime[i] = False
        p += 1
    prime[0] = False
    prime[1] = False
    print("Primary numbers are:")
    for p in range(n + 1):
        if prime[p]: print(p)


# driver program
if __name__ == '__main__':
    n = value
    SieveOfEratosthenes(n)

pitanje = input("do you want to continue(yes/no)?")

while pitanje == ("yes"):
    start: SieveOfEratosthenes(n)
    print("continuing")
if pitanje == ("no"):
    print("goodbye")

强文本

首先你应该删除

value = input("number?:\n")
print(f'you have chosen: {value}')
value = int(value)

从代码的顶部开始,所有内容都必须在您的 __main__ 程序中。

基本上您需要做的是创建一个主要的 While 循环,您的程序将在其中 运行,它将一直循环直到响应不是“是”。

对于每次迭代,您在开始时询问一个新数字,以及它是否必须在结束时继续循环。

像这样:

# driver program
if __name__ == '__main__':
    # starts as "yes" for first iteration
    pitanje = "yes"

    while pitanje == "yes":
        # asks number
        value = input("number?:\n")
        print(f'you have chosen: {value}')
        value = int(value)

        # show results
        start: SieveOfEratosthenes(value)

        # asks for restart
        pitanje = input("do you want to continue(yes/no)?")

    #if it's in here the response wasn't "yes"
    print("goodbye")