Vous utilisez plus grand que OU EGAL TO donc vous ne sortirez pas de la boucle sur n = 0, seulement n = -3 qui déclenche alors votre ELSE déclaration. L'aspect EQUAL TO vous emmène trop loin.
Répondre au commentaire: Utiliser> au lieu de> =. Fondamentalement, le code tel qu'il est écrit ne permettra jamais que n soit égal à 0 au moment où la condition est évaluée. Trace chaque étape de la boucle en utilisant un numéro comme 3.
N = 3
//first pass
WHILE (3 >= 0) // true
n = 3-3 //n now 0
//second pass
WHILE (0 >= 0) //True, 0 is equal to 0
n = 0-3 //n now -3
//third pass
WHILE(-3 >= 0) //False break out of loop
IF(-3 == 0) // false so we jump to the else
ELSE: 3 is not divisible by 3.
Un moyen rapide de repérer facilement vérifier vos boucles qui ne fonctionnent pas comme prévu est juste exécuter manuellement à travers eux avec une entrée facile.
Demandez-vous au sujet uniquement ou pseudocode avez-vous essayé de traduire cela en Python? Si –
'n' est égal à zéro dans votre boucle while, il déduisons 3 à nouveau, donc' n' ne sera jamais nul, donc la 'IF n = 0' ne sera jamais vrai. –
Avez-vous fait à travers ce fait un pas avec du papier et un crayon? – scrappedcola