我的缩进有问题,它使程序无响应


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=" * ")

相关内容

最新更新