Page 1 of 1

script python bloqué

Unread postPosted: 29 Aug 2023, 17:37
by Filoche
bonjour , voici le script qui me pose problème (j'enlève les print() pour faire court) :
Code: Select all
from math import *
nbLoop,result=0,2
while (result!=1):
    nbLoop+=1
    if (fmod(result,2)):
        result=result*3+1
    else:
        result*=2
#

Voilà , la machine ne sort pas de là ?!

Re: script python bloqué

Unread postPosted: 29 Aug 2023, 17:48
by critor
Bonjour.

Il me semble à la lecture de ton script :
  • que la variable result est initialisée à 2
  • que se valeur sera toujours modifiée à la hausse lors des affectations suivantes

En conséquence result sera toujours supérieur à 2 et donc différent de 1, et la boucle ne se terminera jamais.

Re: script python bloqué

Unread postPosted: 29 Aug 2023, 18:30
by Filoche
c'est un exemple ; j'initialise la variable en début de script avec input() .
Ce bout de code correspond à la Conjecture de Syracuse , qui se prête bien à une initiation au codage

Re: script python bloqué

Unread postPosted: 29 Aug 2023, 18:34
by critor
Oui, et dans la conjecture de Syracuse les valeurs ne sont pas toujours croissantes, puisque pouvant retomber à 1.

La petite erreur me semble être dans le cas où la valeur est paire, où tu multiplies par 2 au lieu de diviser par 2.

Re: script python bloqué

Unread postPosted: 29 Aug 2023, 18:38
by Filoche
OK ! Mais c'est bien sûr !!
J'avais pas compris ta réponse !?
Je multiplie par 2 au lieu de diviser
Merci à toi

Re: script python bloqué

Unread postPosted: 29 Aug 2023, 18:39
by critor
De rien, bien content que ce soit réglé. :)