Python :: Aufgabe #349
2 Lösungen

Vokale tauschen (rückwärts ausgeben)
Anfänger - Python
von JKooP
- 16.04.2021 um 21:31 Uhr
Gegeben ist eine Zeichenkette (Wort) welche nur aus Groß- und Kleinbuchstaben gebildet wird.
Ziel ist es, die Zeichen so zu verändern, dass der erste Vokal mit dem letzten, der zweite mit dem vorletzten
und so weiter getauscht wird. Konsonanten werden nicht verändert.
Groß- und Kleinschreibung soll beachtet werden.
Beispiele:
s = Hallo
Lösung: Holla
s = Heidi
Lösung: Hiide (Das "i" in der Mitte bleibt erhalten, da kein Tauschpartner vorhanden!)
s = trAInyOUrprOgrAmmEr
Lösung: trEAnyOUrprOgrImmAr
Erstelle eine Methode/Funktion, die oben beschriebene Aufgabenstellung erledigt.
Viel Spaß
Ziel ist es, die Zeichen so zu verändern, dass der erste Vokal mit dem letzten, der zweite mit dem vorletzten
und so weiter getauscht wird. Konsonanten werden nicht verändert.
Groß- und Kleinschreibung soll beachtet werden.
Beispiele:
s = Hallo
Lösung: Holla
s = Heidi
Lösung: Hiide (Das "i" in der Mitte bleibt erhalten, da kein Tauschpartner vorhanden!)
s = trAInyOUrprOgrAmmEr
Lösung: trEAnyOUrprOgrImmAr
Erstelle eine Methode/Funktion, die oben beschriebene Aufgabenstellung erledigt.
Viel Spaß
Lösungen:

""" #349: Vokale tauschen (rückwärts ausgeben) Ziel ist es, die Zeichen so zu verändern, dass der erste Vokal mit dem letzten, der zweite mit dem vorletzten und so weiter getauscht wird. Konsonanten werden nicht verändert. Groß- und Kleinschreibung soll beachtet werden. """ def tausch(s, x): r = len(x) - 1 for i in range(0, len(x) // 2): s[x[i]], s[x[r]] = s[x[r]], s[x[i]] r -= 1 print("".join(s)) def prf_voc(s): voc = ["a", "e", "i", "o", "u", "A", "E", "I", "O", "U"] ind = [] for i in range(0, len(s)): if s[i] in voc: ind.append(i) tausch(list(s), ind) prf_voc("Hallo") prf_voc("Heidi") prf_voc("trAInyOUrprOgrAmmEr")

#die folgende Funktion, bekommt das zu verändernde Wort, die Position des zu tauschenden Buchstaben und der einzusetzende Buchstabe mitgegeben def ersetzen (eingabe, a, b): #im folgenden wird das zu verändernde Wort bis zu der übermittelten Position a ausgegeben, dann der Buchstabe b eingesetzt und dann der Rest des Wortes ausgegeben if a==0: return b + eingabe[1:] else: return eingabe[:a] + b + eingabe[a+1:] eingabe = input("Geben Sie ein Wort ein: ") zaehler1 = int zaehler1 = 0 position = [] Anzahl = 0 #im folgenden Startet eine Schleife, die den Inhalt der Eingabe überprüft und nach Vokalen überprüft wort = len(eingabe) - 1 while zaehler1 <= wort: #damit auch Großbuchstaben erkannt werden, wird das eingegebene Wort in Kleinbuchstaben als Kopie abgespeichert und dann auf Vokale untersucht klein = eingabe.lower() if klein[zaehler1] == "a" or klein[zaehler1] == "e" or klein[zaehler1] == "i" or klein[zaehler1] == "o" or klein[zaehler1] == "u": #in der folgenden Zeile wird die Position des Vokals gespeichert und dann der Zähler für die Anzahl der Vokale erhöht position.append(zaehler1) Anzahl += 1 #mit zaehler1 wird das Wort Buchstabe für Buchstabe durchsucht, im folgenden wird daher der Zähler um 1 erhöht um den nächsten Buchstaben zu untersuchen zaehler1 += 1 #im folgenden wird geprüft, ob es überhaupt einen Vokal im Wort gibt if Anzahl > 0: #Der counter "Anzahl" muss um 1 verringert werden, da er nach Beenden der Schleife immer 1 größer ist als der Inhalt der Positionsliste Anzahl -= 1 zaehler2 = 0 #im folgenden wird eine Schleife gestartet, die die Vokale vertauscht und dann wieder in das Wort einsetzt while zaehler2 <= Anzahl/2: #zu Beginn jeden Schleifendurchlaufs müssen die entsprechenden Vokale zwischengespeichert werden zwischenspeicher1 = eingabe[position[zaehler2]] zwischenspeicher2 = eingabe[position[Anzahl - zaehler2]] eingabe = ersetzen(eingabe, position[zaehler2], zwischenspeicher2) eingabe = ersetzen(eingabe, position[Anzahl - zaehler2], zwischenspeicher1) zaehler2 += 1 else: #Wenn das Wort keine Vokale enthält, wird dies dem Benutzer zurückgemeldet print("Ihr Wort enthält keine Vokale") print("Das Wort mit den verdrehten Vokalen lautet %s."%(eingabe))