Python :: Aufgabe #358 :: Lösung #1

3 Lösungen Lösungen öffentlich
#358

String abwechselnd neu anordnen

Anfänger - Python von JKooP - 15.05.2021 um 10:48 Uhr
Gegeben ist ein String (Text) bestehend aus Kleinbuchstaben und Ziffern.
Ziel ist es diesen String neu anzuordnen, sodass sich Kleinbuchstaben und Ziffern abwechseln.
D.h., auf einen Kleinbuchstaben darf kein Kleinbuchstabe und auf eine Ziffer keine weitere Ziffer folgen.
Die Reihenfolge der Zeichen-Gruppen (Kleinbuchstaben bzw. Ziffern) darf nicht verändert werden.
Sind beide Zeichengruppen gleich lang, ist es egal mit welchem Zeichen begonnen wird.
Gibt es keine Lösung, soll ein Leer-String zurückgegeben werden.

Beispiele:
s = "train1234"
Lösung: "t1r2a3i4n"

s = "1234567"
Lösung: "", da nur Ziffern

s = "abcdefg"
Lösung: "", da nur Buchstaben

s = "abcdef123"
Lösung: "", nicht abwechselnd möglich

s = "abcd1234"
Lösung: "a1b2c3d4" oder "1a2b3c4d"

Schreibe eine Methode/Funktion, die obige Aufgabenstellung umsetzt.

Viel Spaß
#1
vote_ok
von eisheiliger (3750 Punkte) - 16.05.2021 um 17:56 Uhr
Quellcode ausblenden Python-Code

"""
#358: String abwechselnd neu anordnen
Gegeben ist ein String (Text) bestehend aus Kleinbuchstaben und Ziffern. Ziel ist es diesen String neu anzuordnen,
sodass sich Kleinbuchstaben und Ziffern abwechseln.
"""


def merge_2(f1, f2, kz):
    aus1 = ""
    aus2 = ""
    for i in range(0, len(f1)):
        aus1 += str(f1[i]) + str(f2[i])
        aus2 += str(f2[i]) + str(f1[i])
    if kz == 2:
        print(aus1, "oder", aus2)
    else:
        print(aus1)


def merge_1(inp):
    num = filter(lambda x: x.isdigit(), inp)
    num = (''.join(num))
    alp = filter(lambda x: x.isalpha(), inp)
    alp = (''.join(alp))

    if len(num) == 0 and len(alp) > 0:
        print('""', "da nur Buchstaben")
    elif len(alp) == 0 and len(num) > 0:
        print('""', "da nur Ziffern")
    elif len(num) - len(alp) < -1 or len(num) - len(alp) > 1:
        print('""', "nicht abwechselnd möglich")
    elif len(num) > len(alp):
        merge_2(num, alp + " ", 1)
    elif len(num) < len(alp):
        merge_2(alp, num + " ", 1)
    else:
        merge_2(alp, num, 2)


merge_1("train1234")
merge_1("1234567")
merge_1("abcdefg")
merge_1("abcdef123")
merge_1("abcdef12345678")
merge_1("abcd1234")
merge_1("train123456")


Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
1988220

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.