Problème python connaitre le nombre de le plus grand

Résolu/Fermé
Luten - Modifié le 21 févr. 2022 à 17:55
yg_be Messages postés 23277 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 octobre 2024 - 21 févr. 2022 à 21:07
Bonjour,

J'aimerais connaître un moyen de récupéré le nombre le plus grand dans une boucle while juste pour le x.

C'est mon programme juste avant:

x = 5
while x != 1:
    if x % 2 == 1:
      x = x * 3 + 1
    else:
      x = x / 2
    print(x)



Je cherche à faire des comparaisons avec les nombres obtenus pour que le programme me dis que le plus grand nombre est 16.


Bien à vous.

EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

Merci d'y penser dans tes prochains messages.

Configuration: Windows / Opera 83.0.4254.46

2 réponses

yg_be Messages postés 23277 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 octobre 2024 Ambassadeur 1 546
21 févr. 2022 à 18:15
bonjour,
une technique habituelle, c'est de mémoriser le plus grand nombre observé jusqu'à présent.
0
mamiemando Messages postés 33325 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 22 octobre 2024 7 798
Modifié le 21 févr. 2022 à 20:17
Bonjour,

La méthode proposée par yg_be est la plus naturelle et la plus simple.

Une autre manière de faire plus propre serait de distinguer le calcul des termes de ta suite et ce que tu en fais (libre à toi de faire un print à chaque itération, ou de l'envelopper dans la fonction
max()
).

Pour cela il faut simplement envelopper ton calcul de sorte à en faire un générateur, c'est-à-dire quelque chose sur lequel on peut itérer e.g. avec une boucle
for
.

Exemple :

def f():
    x = 5
    while x != 1: 
        if x % 2 == 1: 
            x = x * 3 + 1 
        else:   
            x = x / 2 
        yield x

print("-" * 78)
print(max(f()))
print("-" * 78)
for y in f():
    print(y)


Résultat :

------------------------------------------------------------------------------
16
------------------------------------------------------------------------------
16
8.0
4.0
2.0
1.0


Bonne chance
0
yg_be Messages postés 23277 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 octobre 2024 1 546
21 févr. 2022 à 21:07
dommage de faire deux itérations.
heureusement, dans ce cas, cela ne coûte presque rien.
0