Répéter une fonction
Fermé
salu
-
Modifié le 10 mai 2022 à 15:02
mamiemando Messages postés 33135 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 juin 2024 - 10 mai 2022 à 15:09
mamiemando Messages postés 33135 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 juin 2024 - 10 mai 2022 à 15:09
A voir également:
- Répéter une fonction
- Fonction si et - Guide
- Fonction moyenne excel - Guide
- Fonction somme excel - Guide
- Snapchat ils m'ont ajouté par la fonction recherche - Forum Snapchat
- Fonction trier excel - Guide
3 réponses
Dalfab
Messages postés
706
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
2 novembre 2023
101
9 mai 2022 à 22:32
9 mai 2022 à 22:32
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.
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
10 mai 2022 à 11:24
10 mai 2022 à 11:24
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}
mamiemando
Messages postés
33135
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
4 juin 2024
7 756
Modifié le 10 mai 2022 à 15:13
Modifié le 10 mai 2022 à 15:13
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
Modifié le 10 mai 2022 à 15:00