Bonjour, je suis en 1er spécialité NSI (numérique ), le programme(en python ) ci-dessous doit permettre de trouver les nombres dit idiots Et on doit complétez l
Question
Et on doit complétez l'algo suivant
x1=int(input())
x2=int(input())
i=x1
while (i>=x1 and i<=x2):
nb=i
??????????????????????
while (nb>0):
r=nb%10
nb=nb//10
s += r*r*r
if (i==s):
print(s)
i=i+1
Merci d'avance, je vous serais très reconnaissant
1 Réponse
-
1. Réponse SmartMind
Réponse :
Salut, le truc est tout bête en faite. Ou tu as mis les points d'interrogation il faut rajouter "s=0".
Le code donne:
x1=int(input())
x2=int(input())
i=x1
while (i>=x1 and i<=x2):
nb=i
s=0
while (nb>0):
r=nb%10
nb=nb//10
s += r*r*r
if (i==s):
print(s)
i=i+1
Explications :
On voit bien que dans ta 2ème boucle, on fait appel à une variable "s".
Quand je prends ce morceau de code "s += r*r*r", c'est comme si je faisais s = s + (r*r*r) [s est égal à la valeur actuel de s plus r fois r fois r], hors s n'a pas de valeur par défaut, et n'est pas défini au par avant.
Donc il faut définir la variable "s", on ne ta pas donné de valeur par défaut pour "s", donc on va partir du principe que "s" commence à 0. Mais attention, on a besoin de cette variable "s" uniquement dans la dernière boucle, dans ce cas on doit savoir ou la positionné, bah on va la mettre juste avant le commencement de la première boucle.