Die Anzahl der Silben in einem Wort
Ich bin ein Anfänger, und ich habe eine Frage, ich benötige Hilfe. Es ist Hausaufgaben, so dass alle Hinweise dankbar. Ich habe gesehen, dass einige ähnliche Themen, aber die Antworten sind über das, was ich weiß, wie zu tun noch...
Muss ich die Anzahl der Silben in einem text-Datei als Teil eines größeren Programms. Ich habe alles, was ich brauche, außer für Silben. Ich habe versucht ein paar verschiedene Methoden, aber es funktioniert nicht immer, erwischen besonderen Fällen. Soll ich 'count Gruppen benachbarter Vokale, nicht einschließlich 'e' an den enden der Wörter.' Ich verstehe, was das bedeutet, aber ich bin nicht in der Lage, es richtig zu machen in meinem Programm. Hier ist, was ich habe:::
def syllables(word):
syl = 0
vowels = 'aeiouy'
starts = ['ou','ei','ae','ea','eu','oi']
endings = ['es','ed','e']
word = word.lower().strip(".:;?!")
for vowel in vowels:
syl +=word.count(vowel)
for ending in endings:
if word.endswith(ending):
syl -=1
for start in starts:
if word.startswith(start):
syl -=1
if word.endswith('le'):
syl +=1
if syl == 0:
syl+=1
return syl
EDIT: Neuer code
def syllables(word):
count = 0
vowels = 'aeiouy'
word = word.lower().strip(".:;?!")
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 word.endswith('le'):
count+=1
if count == 0:
count +=1
return count
- Beachten Sie, dass nach dem neuen code, "Maßstab" hat 2 Silben, während es nur einen. Wenn ich mich nicht Irre, ist die Zählung für die "le" am Ende des Wortes steigen sollte, wenn, und nur wenn es folgt ein Konsonant.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur ein Vorschlag, aber statt 'suchen' für die benachbarten Vokale, konnte Sie nicht hochgezählt Ihre 'count' jedes mal, wenn Sie auf den ersten Vokal, tritt entweder am Wortanfang oder nach einem Konsonanten in dem Wort, außer das 'e' am Ende eines Wortes (es sei denn Ihre Anzahl ist null für dieses Wort). Um zu klären, jedes mal, wenn Sie auf benachbarte Vokale, nur den ersten Vokal würde Inkrement-Zählung.
Nicht positiv, es würde funktionieren, aber ich denke, es funktioniert für alle die Worte, die ich gerade schrieb.
Glück.