Python :: Aufgabe #117

Pig Latin - Schweine Latein
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:

#!/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()

# -*- 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

""" 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')

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)

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)

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")