1
    zero = False

    while not zero:    
         nombre = int(input("Entrez un nombre entier positif (0 pour terminer): "))
         facteurs = []

    if nombre == 0:
        zero = True
    else:
        while nombre % 2==0:
            facteurs.append(2)
            nombre //= 2

    diviseur = 3
    while nombre != 1 and diviseur <= nombre:
        if nombre % diviseur == 0:
            facteurs.append(diviseur)
            nombre //= diviseur
        else:
            diviseur += 2

    print("La décomposition en facteurs premiers est: ") 
    print(*facteurs, sep=" * ")

*** So this is my code now I need the program to restart when the user input is not zero but now that I added my line // zero = False // My program doesn't print any answer and completely ignores the rest of the code. What is happening and how can I fix it ??

Thank you for your help !

3 Answers3

0

Your line states that zero = False.

Your code will run while not zero, which is equivalent to say while zero is False. So you'll enter this decision branch: if your input is 0, I'm immediately prompt again with the question for my input. Otherwise, you go in the other branch.

Now, since your indentation is messed up, the final statement printing the answer is outside of the first while loop. You'll run until diviseur += 2 and start all over again, never exiting, since the second branch never sets zero = True.

Daemon Painter
  • 3,208
  • 3
  • 29
  • 44
0
nombre = -1

while nombre < 0:
    nombre = int(input("Entrez un nombre entier positif (0 pour terminer): "))
    
    if nombre == 0:
        break
    elif nombre > 0:
        facteurs = []

        while nombre % 2==0:
            facteurs.append(2)
            nombre //= 2

        diviseur = 3
        while nombre != 1 and diviseur <= nombre:
            if nombre % diviseur == 0:
                facteurs.append(diviseur)
                nombre //= diviseur
            else:
                diviseur += 2

        print("La décomposition en facteurs premiers est: ") 
        print(*facteurs, sep=" * ")
xanhacks
  • 122
  • 2
  • 5
0

With the indentation below your code runs with the expected behaviour... Tested with Python3.7 in Spyder4

zero = False
while not zero:
    nombre = int(input("Entrez un nombre entier positif (0 pour terminer): "))
    facteurs = []

    if nombre == 0:
        zero = True
    else:
        while nombre % 2==0:
            facteurs.append(2)
            nombre //= 2

    diviseur = 3
    while nombre != 1 and diviseur <= nombre:
        if nombre % diviseur == 0:
            facteurs.append(diviseur)
            nombre //= diviseur
        else:
            diviseur += 2
    print("La décomposition en facteurs premiers est: ") 
    print(*facteurs, sep=" * ")
Paddy Popeye
  • 1,634
  • 1
  • 16
  • 29