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