2017-10-15 4 views
0

J'ai besoin d'écrire une fonction qui va lire des syllabes dans un mot (par exemple, HAIRY est 2 syllabes). J'ai mon code affiché en bas et je suis sûr que cela fonctionne dans la plupart des cas, parce que cela fonctionne avec tous les autres tests que j'ai fait, mais pas avec "HAIRY" où il ne lit que 1 syllabe.Syllable Count In Python

def syllable_count(word): 
    count = 0 
    vowels = "aeiouy" 
    if word[0] in vowels: 
     count += 1 
    for index in range(1, len(word)): 
     if word[index] in vowels and word[index - 1] not in vowels: 
      count += 1 
      if word.endswith("e"): 
       count -= 1 
    if count == 0: 
     count += 1 
    return count 

ESSAI

print(syllable_count("HAIRY")) 

à prévoir: 2

Received: 1

Répondre

1

Le problème est que vous le donnez une chaîne en majuscules, mais vous comparez uniquement valeurs minuscules. Cela peut être corrigé en ajoutant word = word.lower() au début de votre fonction.

def syllable_count(word): 
    word = word.lower() 
    count = 0 
    vowels = "aeiouy" 
    if word[0] in vowels: 
     count += 1 
    for index in range(1, len(word)): 
     if word[index] in vowels and word[index - 1] not in vowels: 
      count += 1 
      if word.endswith("e"): 
       count -= 1 
    if count == 0: 
     count += 1 
    return count 

print(syllable_count('HAIRY')) # prints "2" 
+0

Merci beaucoup! Ça a marché comme sur des roulettes. Je savais qu'il y avait quelque chose qui manquait et bizarre quand tous mes autres tests ont passé mais cela a échoué. – Ryan

+0

Pas de problème! Si cela répond à votre question, vous devriez la marquer comme réponse, et peut-être augmenter cette réponse. –

1

Bonjour, votre code semble fonctionner correctement lorsqu'il reçoit quoi que ce soit en minuscules. Cependant, si vous passez un mot en majuscule, il retournera toujours 1. C'est parce que vous testez contre "aeiou" et non "aeiouAEIOU". Vous pouvez résoudre ce problème de plusieurs manières.

Exemple 1:

vowels = "aeiouyAEIOUY" 

Exemple 2:

print(syllable_count("HAIRY".lower())) 

Exemple 3: ajoutez cette ligne de code au début de la fonction 'syllable_count'

word = word.low()