Répéter une fonction
Bonjour,
J'aimerais savoir, comment on peut répéter une fonction prenant deux arguments, qui eux-mêmes se trouvent dans une liste (mais pour lequel il faut changer l'indice de la liste a chaque fois).
Exemple :
Merci pour vos réponses !
J'aimerais savoir, comment on peut répéter une fonction prenant deux arguments, qui eux-mêmes se trouvent dans une liste (mais pour lequel il faut changer l'indice de la liste a chaque fois).
Exemple :
liste = ["Azie", "Bob", "Brow", "15", "84", "37"] def personne(nom, age): print(f"Bonjour {nom} ! Tu as {age} !") personne(liste[0], liste[3]) # Il faudrait répéter cette ligne autant de fs qu'il y a de personnes.
Merci pour vos réponses !
A voir également:
- Répéter une fonction
- Fonction si et - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Fonction remplacer sur word - Guide
- Cette fonction n'est pas disponible actuellement tv lg - Forum Téléviseurs
3 réponses
La question est : quand tu écris
Ce qu'il faut faire (toujours pour ton exemple) c'est :
Le moyen de retranscrire cela pour une liste quelconque, c'est une boucle.
personne(list[0], list[3])d'où vient le nombre 3? Tu ne l'as pas choisi au hasard! Une piste, dans ton exemple la liste contient 6 choses dont la 1ère moitié sont des noms.
Ce qu'il faut faire (toujours pour ton exemple) c'est :
personne(list[0], list[3]) personne(list[0+1], list[3+1]) personne(list[0+2], list[3+2])
Le moyen de retranscrire cela pour une liste quelconque, c'est une boucle.
salu
Merci, mais j'aimerais ne pas me répéter et donc faire une boucle ?
Bonjour,
Et même, pour éviter de décaler les indices de liste de 3 cases, tu pourrais faire un dictionnaire:
Et même, pour éviter de décaler les indices de liste de 3 cases, tu pourrais faire un dictionnaire:
dico = {"Bob":34, "Esther":56, "François":78}
Bonjour,
Si on répond à ta question sans réfléchir, on te dirait :
Le problème, c'est que si
L'idéal serait :
Bonne chance
Si on répond à ta question sans réfléchir, on te dirait :
liste = ["Azie", "Bob", "Brow", "15", "84", "37"] def personne(nom, age): print(f"Bonjour {nom} ! Tu as {age} !") for i in range(3): personne(liste[i], liste[i + 3])
Le problème, c'est que si
listne contient pas 6 éléments (3 noms, 3 âges), ça ne marchera plus. Alors on pourrait adapter le code en se disant que par convention la première moitié correspond aux noms et la seconde aux âges et ça donnerait quelque chose du genre :
liste = ["Azie", "Bob", "Brow", "15", "84", "37"] def personne(nom, age): print(f"Bonjour {nom} ! Tu as {age} !") n = len(liste) // 2 for i in range(n): personne(liste[i], liste[n + i])
L'idéal serait :
- soit d'avoir deux listes
noms = ["Azie", "Bob", "Brow"] ages = ["15", "84", "37"] def personne(nom, age): print(f"Bonjour {nom} ! Tu as {age} !") for (nom, age) in zip(noms, ages): personne(nom, age)
- soit (comme Phil_1857 le propose) d'avoir un dictionnaire :
map_nom_age = { "Azie" : 15, "Bob" : 84, "Brow" : 37, } def personne(nom, age): print(f"Bonjour {nom} ! Tu as {age} !") for (nom, age) in map_nom_age.items(): personne(nom, age)
- soit de raisonner avec des listes d'arguments et d'utiliser l'opérateur de splice (c'est un peu plus général, car en python une fonction peut avoir un nombre variable d'argument si certains ont des valeurs par défaut, et cette technique permet également de traiter naturellement les fonctions avec plus de deux arguments) :
argss = [ ("Azie", 15), ("Bob", 84), ("Brow", 37) ] def personne(nom, age): print(f"Bonjour {nom} ! Tu as {age} !") for args in argss: personne(*args)
Bonne chance