Python créer des listes avec itérations par boucles

Résolu
Thomasdu33 -  
 mamiemando -
Bonjour,

def f():
    a = 0
    for x in range(2, 10):
     while x != 1: 
        if x % 2 == 1: 
            x = x * 3 + 1 
        else:   
            x = x / 2 
            a = a + 1
        print(x)
        yield x
    print(a)
print("-" * 78)
print(max(f()))
print("-" * 78)
  • Je dois modifier ce programme pour afficher 2 listes après la boucle.
  • Je dois créer une liste pour afficher de 2 à 10, le nombre d'itérations correspondant, et la liste doit être triée sur le nombre d'itérations, du plus grand nombre au plus petit.
  • Avec la deuxième liste affiche, pour chaque entier de 2 à 10, la plus grande valeur atteinte pour x correspondante, et la liste doit être triée sur la plus grande valeur atteinte, dans l'ordre décroissant.


En fait je n'arrive pas à agencer les fonctions
list
et
sorted
avec la boucle for.

Merci d'avance
A voir également:

26 réponses

Utilisateur anonyme
 
Nos messages se sont croisés.
Regarde donc le message 5, et ensuite ici https://lite.qwant.com/?q=python+fonction+retourner+plusieurs+valeurs&client=opensearch
0
Thomasdu33
 
il est super clair le site
0
Thomasdu33
 
Non pas vraiment ou pas exactement, pas deux en tout cas.
0
Utilisateur anonyme
 
Et en attendant, je te propose de modifier un peu ton code comme ça
def f():
    a = 0
    for x in range(2, 10):
     while x != 1: 
        if x % 2 == 1: 
            x = x * 3 + 1 
        else:   
            x = x / 2 
            a = a + 1
        print("x ", x)
        yield x
    print("a ", a)
print("-" * 78)
print(max(f()))
print("-" * 78)


et d'observer ce qui se passe
0
Utilisateur anonyme
 
Est ce que tu sais comment une fonction peut retourner une liste? deux listes?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Thomasdu33
 
def f():
    a = 0
    for x in range(2, 10):
     while x != 1: 
        if x % 2 == 1: 
            x = x * 3 + 1 
        else:   
            x = x / 2 
            a = a + 1
        print(x)
        yield x
    print(a)
print("-" * 78)
print(max(f()))
print("-" * 78)
0
Utilisateur anonyme
 
Bonjour
En Python, l’indentation est primordiale, or par défaut le site ne la conserve pas.
Pour la conserver il faut utiliser les balises de code. Voir ce petit tuto https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
On pourra commencer à essayer de t’aider quand tu auras reposté correctement ton code.
0
Thomasdu33
 
D'accord je le fais
0