Explications code python

Fermé
Sky_0348 Messages postés 2 Date d'inscription samedi 21 août 2021 Statut Membre Dernière intervention 2 septembre 2021 - Modifié le 21 août 2021 à 14:03
Phil_1857 Messages postés 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 - 21 août 2021 à 13:57
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)
A voir également:

2 réponses

Phil_1857 Messages postés 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 178
Modifié le 21 août 2021 à 08:51
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
NHenry Messages postés 15118 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 11 mai 2024 332
21 août 2021 à 13:20
Non, car S est modifié à chaque boucle, c'est en lien avec la conjecture https://www.youtube.com/watch?v=094y1Z2wpJg
0
Phil_1857 Messages postés 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 178
21 août 2021 à 13:57
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