Programme Python trop redondant...

Résolu

Bonsoir à tous ^^,

je suis débutant sur le logiciel et j'aimerai rendre un programme python un peu moins redondant. Voici mon énoncé:

Rédiger une fonction; repartition(liste_couple) qui imprime autant de fois que nécessaire le texte suivant : « Pour prénom, une bonne idée serait cadeau » où le prénom de la personne et le cadeau sont associés en amont (penser à faire une liste de listes).

Et voici mon programme:

<

list_gift=['une console de jeux','un vélo', 'des livres','de l’argent','une surprise']
prenom=['Patrick Bateman','Vladimir','Magicarp','Ruby Nikara','Ernest Khalimov']
import random
def repartition():
        print(f'Pour {prenom[0]} une bonne idée serait {list_gift[0]}')
        print(f'Pour {prenom[1]} une bonne idée serait {list_gift[1]}')
        print(f'Pour {prenom[2]} une bonne idée serait {list_gift[2]}')
        print(f'Pour {prenom[3]} une bonne idée serait {list_gift[3]}')
        print(f'Pour {prenom[4]} une bonne idée serait {list_gift[4]}')

repartition()

>

Merci de votre aide x)


Windows / Chrome 107.0.0.0

8 réponses

  1. Ah oui! J'ai déjà utilisé shuffle auparavant, c'est vrai que ça peut être sympas ici ^^

    1. Modérateur

      Bien !

      Une petite amélioration si tu as mis cadeau1 = personne1. Random offre la possibilité de mélanger une liste, ainsi à chaque exécution la liste est ordonnée différemment :

       random.shuffle(list_gift) 

      1. Oh ok d'accord merci x)

        Je ferais ça demain, bonne nuit ^^

        1. Modérateur

          Quand on a une liste de liste, il faut utiliser 2 indices, le 1er pour le niveau 1, le second pour le niveau 2 , liste[x][y],
          x va être l'indice i et comme nous avons un couple au niveau 2 y va prendre les valeurs 0 et 1

          import random
          list_gift=['une console de jeux','un vélo', 'des livres','de l’argent','une surprise']
          prenom=['Patrick Bateman','Vladimir','Magicarp','Ruby Nikara','Ernest Khalimov']
          list_couple=[['Patrick Bateman','une console de jeux'],['Vladimir','un velo'],['Magicarp','des livres'],['Ruby Nikara','de l’argent'],['Ernest Khalimov','une surprise']]
          def repartition(list_couple):
              for i in range(len(list_couple)):
                  print(f'Pour {list_couple[i][0]} une bonne idée serait {list_couple[i][1]}')
          
          repartition(list_couple)
          


          Mais il y a quelque chose dans ton programme qui ne va pas ;-) si on programme, c'est pour faire faire les choses à l'ordinateur. On ne va pas composer à la main liste_couple, c'est à l'ordinateur de le faire. En fait à toi d'écrire le programme pour lui donner la marche à suivre pour le faire à partir des 2 listes personne et cadeau.


          1. Re bonjour, 

            Désolé je suis un peu perdu, je ne comprends pas ce que je dois mettre comme intervalle dans mes crochets dans le print...

            list_gift=['une console de jeux','un vélo', 'des livres','de l’argent','une surprise']
            prenom=['Patrick Bateman','Vladimir','Magicarp','Ruby Nikara','Ernest Khalimov']
            list_couple=[['Patrick Bateman','une console de jeux'],['Vladimir','un velo'],['Magicarp','des livres'],['Ruby Nikara','de l’argent'],['Ernest Khalimov','une surprise']]
            import random
            def repartition(list_couple):
                for i in range(len(list_couple)):
                    print(f'Pour {list_couple[]} une bonne idée serait {list_couple[]}')
            
            repartition(list_couple)

            Merci ^^

            1. Modérateur

              Bonjour,

              Effectivement dans un programme on va faire une boucle pour répéter une action. Comme

              for i in range(len(list));


              Mais il faut d'abord te concentrer sur l'énoncé :

              • prénom de la personne et le cadeau sont associés en amont (penser à faire une liste de listes).
              • repartition(liste_couple)

              Donc il te faut faire liste_couple, en combinant  list_gift et prenom : [ [ 'patrick' , 'console' ] , [ 'vladimir' , 'velo' ] ,  ... ], et cette liste la passer en paramètre à la fonction repartition()



              PS bis : pour afficher du code, il faut utiliser l'icone spécialisée <>, et donner le langage, Python, pour la coloration syntaxique.