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.
InformationsquelleAutor AbigailB | 2013-01-26
Schreibe einen Kommentar