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

Time:11-20

i'm having a rough time trying to do a loop with the while function. Basicly i want the code to show me all prime numbers from 0 to the number i wrote in input. Then, to ask a question if i want to do it one more time (if yes to repeat the code from the start) or if not to exit. How i got it now is just to repeat the last results infinitely. All results i found online with the while loop don't really explain how to repeat a certain part of the code. I'm by no means even a little bit educated when it comes to this stuff so if its a stupid question, please forgive me.

# 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")
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>

strong text

CodePudding user response:

Firstly you should remove

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

from the top of your code, everything must be inside your __main__ program.

Basically what you need to do is create a main While loop where your program is gonna run, it will keeps looping until the response is not "yes".

For each iteration, you ask a new number at the beggining and if it has to keep looping at the end.

Something like this:

# 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")
  • Related