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=" * ")
***所以这是我的代码,现在我需要程序在用户输入不为零时重新启动,但现在我添加了行//zero=False//我的程序不打印任何答案,完全忽略了代码的其余部分。发生了什么,我该如何解决??
谢谢你的帮助!
您的行声明zero = False
。
您的代码将在not zero
时运行,相当于说while zero is False
。因此,您将进入这个决策分支:如果您的输入是0
,我将立即再次提示输入问题。否则,你就去另一家分店。
现在,由于您的缩进被打乱了,打印答案的最后一条语句在第一个while
循环之外。您将一直运行到diviseur += 2
,然后重新开始,从不退出,因为第二个分支从未设置zero = True
。
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=" * ")
使用下面的缩进,您的代码以预期的行为运行。。。在Spyder4 中使用Python3.7进行测试
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=" * ")