[python] exercice de listes
Fermé
tarang
Messages postés
12
Date d'inscription
mardi 5 septembre 2006
Statut
Membre
Dernière intervention
11 décembre 2007
-
23 nov. 2006 à 15:03
aureargo - 11 juil. 2011 à 11:36
aureargo - 11 juil. 2011 à 11:36
A voir également:
- [python] exercice de listes
- Citizen code python avis - Accueil - Outils
- Liste déroulante de choix excel - Guide
- Python retour à la ligne dans le code - Forum Python
- Ce programme est écrit en python ✓ - Forum Python
11 réponses
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 659
23 nov. 2006 à 15:23
23 nov. 2006 à 15:23
Dans beaucoup de cas, on peut se passer du while et utiliser plutôt le FOR.
C'est le principe des itérateurs.
Beaucoup d'objets Python sont des itérateurs (chaînes, fichiers, listes, dictionnaires, etc).
Cela permet de les parcourir facilement avec FOR sans avoir utiliser et incrémenter une variable d'index (i).
C'est le principe des itérateurs.
Beaucoup d'objets Python sont des itérateurs (chaînes, fichiers, listes, dictionnaires, etc).
Cela permet de les parcourir facilement avec FOR sans avoir utiliser et incrémenter une variable d'index (i).
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 659
23 nov. 2006 à 15:38
23 nov. 2006 à 15:38
Qu'est-ce qui cloche dans ma ligne 9?
Tu essaie d'accéder à un caractère dont l'indice est plus grand que le tableau.
Exemple:
"index out of range" veut dire que tu as essayé d'utiliser un index hors des valeurs possible (range).
(normal puisque ma chaîne ne fait que 7 caractères, je peux donc seulement utiliser les indexes 0,1,2.. jusqu'à 6).
Tu essaie d'accéder à un caractère dont l'indice est plus grand que le tableau.
Exemple:
ch = "CDEFGAB" print ch[12]
Traceback (most recent call last): File "a.py", line 2, in <module> print ch[12] IndexError: string index out of range
"index out of range" veut dire que tu as essayé d'utiliser un index hors des valeurs possible (range).
(normal puisque ma chaîne ne fait que 7 caractères, je peux donc seulement utiliser les indexes 0,1,2.. jusqu'à 6).
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 659
23 nov. 2006 à 15:13
23 nov. 2006 à 15:13
Note: Met ton code entre deux balises < code> sinon on ne voit pas correctement l'indentation.
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 659
23 nov. 2006 à 15:17
23 nov. 2006 à 15:17
Voici comment je ferais:
Ce qui donne:
ch = "CDEFGAB" ch2 = ch*2 # (Deux fois la longueur de ch) for i in range(len(ch)): print ch2[i] + ch2[i+2] + ch2[i+4]
Ce qui donne:
CEG DFA EGB FAC GBD ACE BDF
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 659
23 nov. 2006 à 15:19
23 nov. 2006 à 15:19
Mais pour faire plus propre, on devrait plutôt faire:
(% est l'opération de modulo (reste de la division entière))
ch = "CDEFGAB" lc = len(ch) for i in range(lc): print ch[i%lc]+ch[(i+2)%lc]+ch[(i+4)%lc]
(% est l'opération de modulo (reste de la division entière))
tarang
Messages postés
12
Date d'inscription
mardi 5 septembre 2006
Statut
Membre
Dernière intervention
11 décembre 2007
23 nov. 2006 à 15:28
23 nov. 2006 à 15:28
merci pour cette réponse rapide et efficace
ce code est effectivement beaucoup plus court
je découvre cette commande "for i in range". Est-ce une instruction loop, dans ce cas i s'indente? Bref, j'ai de quoi étudier
Qu'est-ce qui cloche dans ma ligne 9?
ce code est effectivement beaucoup plus court
je découvre cette commande "for i in range". Est-ce une instruction loop, dans ce cas i s'indente? Bref, j'ai de quoi étudier
Qu'est-ce qui cloche dans ma ligne 9?
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 659
23 nov. 2006 à 15:35
23 nov. 2006 à 15:35
Est-ce une instruction loop, dans ce cas i s'indente? Bref, j'ai de quoi étudier
En faisant: for a in b
L'instruction for va extraire élément par élément tout ce que contient b.
A chaque étape, il met la valeur dans a.
A l'intérieur du for, il n'y a plus qu'à faire ce que tu veux avec la valeur a extraite de b.
Exemple:
ce qui affiche:
range(n) va créer une liste [0,1,2,3,4,5...n-1]
Exemple:
Donc for i in range(5) est équivalent à for i in [0, 1, 2, 3, 4]
En faisant: for a in b
L'instruction for va extraire élément par élément tout ce que contient b.
A chaque étape, il met la valeur dans a.
A l'intérieur du for, il n'y a plus qu'à faire ce que tu veux avec la valeur a extraite de b.
Exemple:
mot = "coucou" for lettre in mot: print lettre.upper()
ce qui affiche:
C O U C O U
range(n) va créer une liste [0,1,2,3,4,5...n-1]
Exemple:
print range(5) [0, 1, 2, 3, 4]
Donc for i in range(5) est équivalent à for i in [0, 1, 2, 3, 4]
tarang
Messages postés
12
Date d'inscription
mardi 5 septembre 2006
Statut
Membre
Dernière intervention
11 décembre 2007
23 nov. 2006 à 16:58
23 nov. 2006 à 16:58
limpide ... merci
voila qui me donne de quoi avançer
je pense installer un shell sur mon palm, c'est vraiment gai Python
A++
voila qui me donne de quoi avançer
je pense installer un shell sur mon palm, c'est vraiment gai Python
A++
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 659
23 nov. 2006 à 17:00
23 nov. 2006 à 17:00
Très sympa comme langage.
Je m'amuse bien avec:
https://sebsauvage.net/webgobbler/
Voir aussi les trucs et astuces Python (en anglais):
https://sebsauvage.net/python/snyppets/
Et aussi le wiki francophone:
http://wikipython.flibuste.net
Je m'amuse bien avec:
https://sebsauvage.net/webgobbler/
Voir aussi les trucs et astuces Python (en anglais):
https://sebsauvage.net/python/snyppets/
Et aussi le wiki francophone:
http://wikipython.flibuste.net
tarang
Messages postés
12
Date d'inscription
mardi 5 septembre 2006
Statut
Membre
Dernière intervention
11 décembre 2007
23 nov. 2006 à 17:47
23 nov. 2006 à 17:47
programme très amusant, chapeau! On dirait Armand Pierre
merci pour les liens
merci pour les liens