2012-10-10 1 views
-2

J'ai des problèmes avec une tâche faite par un enseignant. Je suis un débutant python donc je ne comprends pas vraiment la langue.Rechercher le mot dans une liste avec plus de

J'ai besoin de créer une fonction qui donne une chaîne de mots et cherche le mot avec plus de "a" dessus et s'il y a deux mots avec le même nombre de "a" imprime le premier.

Edit 1: Oui bien mon idée était d'examiner chaque mot et utiliser quelque chose comme str.count("a") puis imprimer le mot avec la valeur la plus élevée

+5

Un bon point de départ pour obtenir de l'aide est de montrer ce que vous avez pensé jusqu'à présent ... toute chance que vous puissiez nous expliquer comment vous le feriez manuellement? – Crisfole

+0

@Downvoter: non ce n'est pas une bonne question, mais au lieu de juste downvoting le nouveau gars dans l'oubli pourquoi ne lui donnez pas une chance de modifier? – Crisfole

+0

Désolé, mon idée pour – user1502668

Répondre

0

Cette réponse devrait être assez simple, même pour les débutants, parce qu'il utilise uniquement des commandes très simples:

s = 'caaat caat cat kittycaat, rack, smaaack' 
x = 0 
for i in s.split(): 
    if i.count('a') > x: 
     x = i.count('a') 
     word = i 
print word 

Fondamentalement, il utilise la fonction .split() d'une chaîne à diviser la chaîne en mots séparés. Ensuite, la boucle for parcourt chaque mot, notant combien il y a de 'a' dans chaque mot et s'il y a plus de x mots, elle met à jour x avec le nombre et place le mot dans la variable 'mot'. Lorsque la boucle reçoit un autre mot avec plus de 'a', elle met à nouveau à jour x et mot, mais si elle obtient un mot avec moins de 'a', alors elle ne fera rien.

+0

Wow merci c'est vraiment facile à comprendre !! Je ne comprends pas vraiment la lettre z pourquoi l'utiliser? – user1502668

+0

Je suis désolé, j'ai copié le mauvais code de IDLE. Ce z devrait être "s.split()", je l'ai corrigé dans la réponse. Comprenez-vous comment le code fonctionne maintenant? Christopher a expliqué une bonne partie de celui-ci. Btw, le split renvoie une liste de mots et le "i" dans le code est fondamentalement chaque élément de cette liste à savoir. un mot. – Protagonist

+0

Oui! Merci beaucoup. Votre code est vraiment facile à lire! – user1502668

3
>>> words = "foo bar baz banana" 
>>> max(words.split(), key=lambda x:x.count("a")) 
'banana' 
+0

Merci. J'ai essayé votre solution et cela fonctionne! Mais je ne comprends pas la méthode lambda, peut-être que je le ferai dans de futures missions. Mais merci! – user1502668

Questions connexes