Python :: Aufgabe #349

2 Lösungen Lösungen öffentlich

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ß

Lösungen:

vote_ok
von eisheiliger (3750 Punkte) - 20.04.2021 um 18:38 Uhr
Quellcode ausblenden Python-Code

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


vote_ok
von Nikida (50 Punkte) - 28.04.2021 um 17:34 Uhr
Quellcode ausblenden Python-Code
#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))
2108719

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.