Problème python

J'ai le problème, suivant, ma boucle while ne s'arrête pas, je ne comprends pas pourquoi :

def smartphone():
somme=17
mois=0
while somme < 120:
somme=somme+50
somme=somme-2*somme/5
mois=mois+1
return mois

si par contre je fais ça, ça marche avec une condition si

def smartphone():
somme=17
mois=0
while somme<120: somme=somme+50 print("argent après papa maman",somme) if somme>120:
print(mois)
else:
somme=somme-2*somme/5
print('dépense :',somme)
mois=mois+1

Réponses

  • désolé pour l'indentation je suis au lycée.

  • Dans ton premier bloc de code, la variable somme reste egale a 75.

  • Problème de priorité sur les opérateurs mathématiques.
    Mets des parenthèses ...

  • il y aussi un piege en ecrivant cela
    somme=somme+50
    somme=somme-2*somme/5

    et
    sominter=somme+50
    somme=somme-(2*(sominter/5))

  • 21 nov. modifié

    si je fais mon programme et que je mets des traceurs, voici ce qu'on obtient ci-dessous. On voit que le programme fait ce qu'on lui demande, il arrive à dépasser les 120 mais le while ne s'arrête pas ce que je ne comprends pas. La condition d'arrêt ne se fait pas. Est ce que c'est parce que le coup d'après on retire les 2/5 ?

    smartphone()
    somme intermédiaire = 67
    somme = 40.2
    somme intermédiaire = 90.2
    somme = 54.120000000000005
    somme intermédiaire = 104.12
    somme = 62.472
    somme intermédiaire = 112.47200000000001
    somme = 67.48320000000001
    somme intermédiaire = 117.48320000000001
    somme = 70.48992000000001
    somme intermédiaire = 120.48992000000001
    somme = 72.293952
    somme intermédiaire = 122.293952
    somme = 73.3763712
    somme intermédiaire = 123.3763712
    somme = 74.02582272
    somme intermédiaire = 124.02582272
    somme = 74.415493632
    somme intermédiaire = 124.415493632
    somme = 74.6492961792
    somme intermédiaire = 124.6492961792
    somme = 74.78957770752
    somme intermédiaire = 124.78957770752
    somme = 74.873746624512
    somme intermédiaire = 124.873746624512
    somme = 74.9242479747072
    somme intermédiaire = 124.9242479747072
    somme = 74.95454878482431
    somme intermédiaire = 124.95454878482431
    somme = 74.97272927089459
    somme intermédiaire = 124.97272927089459
    somme = 74.98363756253676
    somme intermédiaire = 124.98363756253676
    somme = 74.99018253752206
    somme intermédiaire = 124.99018253752206
    somme = 74.99410952251324
    somme intermédiaire = 124.99410952251324

  • en fait Stéphane a raison, si je rajoute une variable intermédiaire ça fonctionne :

    def smartphone():
    somme=17
    mois=0
    sominter=0
    while sominter < 120:
    sominter=somme+50
    print("somme intermédiaire =",somme)
    somme=sominter-(2*(sominter/5))
    print("somme =",somme)
    mois=mois+1
    return mois

Connectez-vous ou Inscrivez-vous pour répondre.