Explications code python

Sky_0348 Messages postés 2 Statut Membre -  
Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à vous ,

Malgré mes efforts je n'arrive pas à comprendre ce code pourtant normalement simple.

50%2 == 0 du coup s = 25 non ?

Pouvez-vous m'expliquer cela brièvement?

je vous remercie.

s = 50
for i in range(10 , 20) :
   if s%2 == 0 :
      s /= 2
   else :
      s = 3*s + 1
print (s)

2 réponses

  1. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    Bonjour,

    ben oui si s%2 == 0 -> s=s/2, donc s=25

    Mais comme tu fais une boucle, tu divises à chaque tour et à la fin s=11

    Il faudrait indenter le print(s) final:
    s = 50
    for i in range(10 , 20) :
       if s%2 == 0 :
          s /= 2
       else :
          s = 3*s + 1
       print (s)


    et la tu as 10 fois s=25
    et donc la boucle, elle sert à quoi ?
    0
    1. NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention   387
       
      Non, car S est modifié à chaque boucle, c'est en lien avec la conjecture https://www.youtube.com/watch?v=094y1Z2wpJg
      0
  2. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    C'est ça:

    avec le print dans la boucle, on imprime 10 valeurs de s différentes
    la dernière étant s=11.0 ....
    0