Essayez vous-même la fonction énumération dans cet exercice rapide. Complétez la fonction skip_elements ()
pour renvoyer tous les autres éléments de la liste, cette fois en utilisant la fonction enumerate ()
pour vérifier si un élément est sur une position paire ou impaire position.
def skip_elements(elements): # code goes here for i,alpha in enumerate(elements): if i%2==0: return alpha
Ma solution ci-dessous ne renvoie que "a" et "orange"
Je suppose que la boucle for
ne fonctionne pas correctement? Que me manque-t-il?
def skip_elements(elements): # code goes here return ___ print(skip_elements(["a", "b", "c", "d", "e", "f", "g"])) # Should be ['a', 'c', 'e', 'g'] print(skip_elements(['Orange', 'Pineapple', 'Strawberry', 'Kiwi', 'Peach'])) # Should be ['Orange', 'Strawberry', 'Peach']
3 Réponses :
Vous utilisez return, qui sort de la boucle. Si vous voulez simplement imprimer, vous voudrez quelque chose comme:
def skip_elements(elements): even_elements = [] for i,alpha in enumerate(elements): if i%2==0: even_elements.append(alpha) return even_elements
Si vous voulez renvoyer une liste:
def skip_elements(elements): # code goes here for i,alpha in enumerate(elements): if i%2==0: print(alpha)
L'utilisation de la fonction par les OP s'attend clairement à ce qu'elle renvoie une liste
Utilisez la propriété slice de la liste a [start: stop: step]
["a", "b", "c", "d", "e", "f", "g"][::2]
Le problème posé spécifiquement les états utilisant la méthode enumerate
et vérifiant la parité de l'index.
La boucle for fonctionne correctement, le problème est que vous effectuez un retour. Lorsque nous faisons un retour, le contrôle sort de la boucle. Si vous souhaitez renvoyer les éléments, vous pouvez les stocker dans une liste puis renvoyer
def skip_elements(elements): # code goes here elements = [] for i,alpha in enumerate(elements): if i%2==0: elements.append(alpha) return elements
vous avez la bonne idée en utilisant
enumerate
eti% 2
, vous semblez mal comprendre comment fonctionnereturn
, essayez de réviser cela.