Python :: Aufgabe #117

6 Lösungen Lösungen öffentlich

Pig Latin - Schweine Latein

Anfänger - Python von DrizZle - 15.06.2016 um 13:57 Uhr
Hier zum Wikipedia Post

Einführung:

Zitat:

Pig Latin (engl.; wörtlich: Schweine-Latein) bezeichnet eine Spielsprache, die im englischen Sprachraum verwendet wird.
Sie wird vor allem von Kindern benutzt, aus Spaß am Spiel mit der Sprache oder als einfache Geheimsprache, mit der Informationen vor Erwachsenen oder anderen Kindern verborgen werden sollen.


Erklärung:

Zitat:

Beginnt das Wort mit einem Konsonanten, so wird der initiale Konsonant oder Konsonantencluster ans Ende des Wortes verschoben und ein „ay“ angehängt. Zu betrachten ist hierbei nicht die Rechtschreibung, sondern die tatsächliche Aussprache: „Stumme“ Konsonantenbuchstaben, wie z. B. das „h“ in „honor“, sind keine Konsonanten.

loser → oser-lay
button → utton-bay
star → ar-stay
three → ee-thray
question → estion-quay
happy → appy-hay
Pig Latin → Ig-pay Atin-lay

Beginnt das Wort mit einem Vokal oder einem stummen Konsonanten, so wird direkt ein „ay“ angehängt.

eagle → eagle-ay
America → America-ay
honor → honor-ay


Aufgabe:
Schreibt ein Programm welches ein belibiges Wort ins Schweine Latein umwandelt und ausgibt. Auf die Regel mit Stummen H's kann man verzichten.

Lösungen:

3 Kommentare
vote_ok
von ah3n0bar6us (660 Punkte) - 16.07.2016 um 17:20 Uhr
Eine Lösung, ohne die Beachtung des Stummen 'h':

Quellcode ausblenden Python-Code
#!/usr/bin/env python3
def pigLatin(testWord):
        #testWord = input("Welches Wort soll umgewandelt werden? ")
        vowel = ["a","e","i","o","u","A","E","I","O","U"];
        wordResult = ""
        if testWord[0] in vowel:
            wordResult = testWord +"ay"
        else:
            wordResult = testWord.replace(testWord[0], "") + testWord[0] + "ay"

        print(wordResult)

def main():
    for i in ["This", "is", "an", "example", "of", "Pig", "Latin"]:
        pigLatin(i)

if __name__ == "__main__":
    main()
3 Kommentare
1x
vote_ok
von Nachbar (2820 Punkte) - 02.08.2016 um 22:37 Uhr
Quellcode ausblenden Python-Code
# -*- coding: utf-8-sig -*-

def piglatin(piginput):

    qu = "qu", "QU"
    v = "a", "e", "i", "o", "u","A", "E", "I", "O", "U"
    k = "b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "q", "r", \
    "s", "t", "v", "w", "x", "y", "z", "B", "C", "D", "F", "G", "H", "J", "K", \
    "L", "M", "N", "P", "Q", "R", "S", "T", "V", "W", "X", "Y", "Z"
    result = ""
    capital = False

    pigexpression = piginput.split()

    for letter in pigexpression:
        if letter[0].isupper():
            capital = True
        # 3 Konsonanten
        if letter[0] in k and letter[1] in k and letter[2] in k:
            fChar = letter[0:3]
            nWord = letter[3:]
            if capital == True:
                nWord = nWord.capitalize()
                fChar = fChar.lower()
        # 2 Konsonanten
        elif letter[0] in k and letter[1] in k:
            fChar = letter[0:2]
            nWord = letter[2:]
            if capital == True:
                nWord = nWord.capitalize()
                fChar = fChar.lower()
        # Vokal
        elif letter[0] in v:
            fChar = ""
            nWord = letter
            if capital == True:
                nWord = nWord.capitalize()
                fChar = fChar.lower()
        # qu
        elif letter[0:2] in qu:
            fChar = letter[0:2]
            nWord = letter[2:]
            if capital == True:
                nWord = nWord.capitalize()
                fChar = fChar.lower()
        # 1 Konsonant
        else:
            fChar = letter[0:1]
            nWord = letter[1:]
            if capital == True:
                nWord = nWord.capitalize()
                fChar = fChar.lower()

        result = result + nWord + "-" + fChar + "ay "

    print result

piglatin("loser")
piglatin("button")
piglatin("star")
piglatin("three")
piglatin("question")
piglatin("happy")
piglatin("eagle")
piglatin("America")
piglatin("honor")
piglatin("Pig Latin")


AUSGABE (ohne stummes-H-Regel):

Zitat:

oser-lay
utton-bay
ar-stay
ee-thray
estion-quay
appy-hay
eagle-ay
America-ay
onor-hay
Ig-pay Atin-lay

3 Kommentare
vote_ok
von ZRX88 (2770 Punkte) - 29.11.2016 um 22:11 Uhr
Quellcode ausblenden Python-Code
""" pig latin """
# https://de.wikipedia.org/wiki/Konsonantencluster
Konsonaten_cluser = 'bl, br, ch, chl, chr,dr, dw,fl, fr,gl, gn, gr,kh, khm, kl, kn, kr, pf, pfl, pfr, pl, pn, pr, ps, ph, phl, phr, rh, sk, skl, skr, sl, sp, sph, spl, spr, st, str, sz, sch, schl, schm, schn, schr, schw,th, thr, tr, vl ,wr, zw'.split(', ')
vocals = 'a, e, u, o, i, h'.split(', ')

word = raw_input('Please enter a word: ')

if word[:2] in Konsonaten_cluser:
    print (word[2:].title()+'-' + word[:2] + 'ay')
elif word[:1] in vocals:
    print(word.title() + '-' +'ay')
else:
    print(word[1:].title() + '-' + word[1]+'ay')
3 Kommentare
vote_ok
von PythPate (20 Punkte) - 06.12.2016 um 21:38 Uhr
Pig Latin - ohne stummen h/H

Quellcode ausblenden Python-Code
word = input("Zu uebersetzendes Wort: ")

vocals = 'A, E, I, O, U, a, e, i, o, u'

if word[0] in vocals:
    word = word + "ay"
else:
    word = word[1:] + word[0] + "ay"

print(word)
vote_ok
von Y0uLyric (500 Punkte) - 15.12.2016 um 17:13 Uhr
Quellcode ausblenden Python-Code
def eingabe():

    global wort
    wort = input("Welches Wort soll übersetzt werden?: ")

def übersetzen(wort):

    global neues_wort
    vokale = ["a", "e", "i", "o", "u"]

    #Konsonanten
    if wort[:1] not in vokale:
        neues_wort = wort[1:] + "-" + wort[:1] + "ay"
    #Vokale
    else:
        neues_wort = wort + "-ay"

def ausgabe(wort, neues_wort):

    print(wort + " --> " + neues_wort)

eingabe()
übersetzen(wort)
ausgabe(wort, neues_wort)
vote_ok
von 0 (0 Punkte) - 12.09.2017 um 18:49 Uhr
Quellcode ausblenden Python-Code
import win32com.client
speaker=win32com.client.Dispatch("SAPI.SPVoice")

#Der Funktion kann eine beliebige Anzahl an Wörter übergeben werden. Die Wörter müssen durch ein
#Leerzeichen getrennt werden! Zur Audio-Ausgabe könnte Microsoft Zira Desktop-Englisch als Speaker ausgewählt sein
def schwein(woerter):
    from re import compile
    
    re1=compile('[^aeiouAEIOU]+')
    re2=compile('[aeiouAEIOU]|[Hh][aeiouAEIOU]')
    Woerter=woerter.split()
    schweine=' '
    for wort in Woerter:
        
        kons=re1.match(wort)
        vok=re2.match(wort)
        
        if vok:
            schwein=wort+'-ay'
            
            schweine+=' '+schwein
        elif kons:
            schwein=wort[kons.end():]
            schwein+='-' + wort[:kons.end()]+'ay'
            
            schweine+=' '+schwein
    speaker.Speak(woerter)
    print('Ihre eingegebenen Wörter: ',woerter,'\nheißen auf Pig Latin: ',schweine)
    speaker.Speak(schweine)
woerter=input("Bitte geben Sie die zu übersetzenden englischen Wörter getrennt mit einem Leerzeichen ein:\n ")

while woerter:
    schwein(woerter)
    woerter=input("Bitte geben Sie die zu übersetzenden Wörter getrennt mit einem Leerzeichen ein:\n ")
print("Danke")