[python] exercice de listes
tarang
Messages postés
12
Date d'inscription
Statut
Membre
Dernière intervention
-
aureargo -
aureargo -
Hello,
Je suis débutant version alpha en programmation. Je me suis pourtant plongé dans l'aventure avec Python pour mon plaisir personnel. C'est donc de façon autodidacte et probablement maladroite que je débute .
Je lis actuellement le livre "apprendre a programmer avec Python" de G.Swinnen et termine le chapitre des listes.
Voici un petit exercice personnel que je n'arrive pas a résoudre:
soit une liste de caractères CDEFGAB (hé oui, vous devinez ma source d'inspiration)
comment faire afficher une harmonisation d'accords de trois sons a partir de chaque degré (CEG * DFA * EGB ... etc.)
Ma syntaxe doit probablement être fausse car il m'affiche une erreur à la 9e ligne
voici:
# -*- coding:Latin-1 -*-
ch = "CDEFGAB"
lc = len(ch)
i = 0
nch = ""
c1, c2, c3 = 0, 2, 4
while i<lc:
nch = nch + "*" + ch[c1] + ch[c2] + ch[c3]
i = i + 1
c1 = c1 + 1
c2 = c2 + 1
c3 = c3 + 1
print nch
merci d'avançe
Je suis débutant version alpha en programmation. Je me suis pourtant plongé dans l'aventure avec Python pour mon plaisir personnel. C'est donc de façon autodidacte et probablement maladroite que je débute .
Je lis actuellement le livre "apprendre a programmer avec Python" de G.Swinnen et termine le chapitre des listes.
Voici un petit exercice personnel que je n'arrive pas a résoudre:
soit une liste de caractères CDEFGAB (hé oui, vous devinez ma source d'inspiration)
comment faire afficher une harmonisation d'accords de trois sons a partir de chaque degré (CEG * DFA * EGB ... etc.)
Ma syntaxe doit probablement être fausse car il m'affiche une erreur à la 9e ligne
voici:
# -*- coding:Latin-1 -*-
ch = "CDEFGAB"
lc = len(ch)
i = 0
nch = ""
c1, c2, c3 = 0, 2, 4
while i<lc:
nch = nch + "*" + ch[c1] + ch[c2] + ch[c3]
i = i + 1
c1 = c1 + 1
c2 = c2 + 1
c3 = c3 + 1
print nch
merci d'avançe
A voir également:
- [python] exercice de listes
- Citizen code python avis - Accueil - Outils
- Liste déroulante de choix excel - Guide
- \R python ✓ - Forum Python
- Liste de diffusion whatsapp - Guide
- Listes déroulantes en cascade excel - Guide
11 réponses
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).
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).
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
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))
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?
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]
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++
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