Python :: Aufgabe #360

2 Lösungen Lösungen öffentlich

Ziffern durch Kleinbuchstaben ersetzen (right-shifting)

Anfänger - Python von JKooP - 22.05.2021 um 16:57 Uhr
Gegeben ist ein String (Text) bestehend aus Kleinbuchstaben und den Ziffern 0 bis 9.
Die Buchstaben stehen an den geraden und die Ziffern an den ungeraden Stellen (zero-based).
Ziel soll es sein, jede Ziffer durch einen Buchstaben zu ersetzen, indem der vorangestellte Buchstabe
um den Wert der Ziffer gemäß Alphabet nach rechts verschoben wird (right-shifting).
Die Buchstaben bleiben dabei erhalten.
Bei der Erstellung des Ausgangs-Strings soll darauf geachtet werden, dass das Verschieben nicht über 'z' hinausgeht.

Beispiele:

s = "a1c1e1"
Lösung: "abcdef", denn
a >> 1 -> b
c >> 1 -> d
e >> 1 -> f

s = "a4b2c1d5"
Lösung: "aebdcddi", denn
a >> 4 -> e
b >> 2 -> d
c >> 1 -> d
d >> 5 -> i

Erstelle eine Methode/Funktion, die obige Aufgabenstellung umsetzt.
Wer möchte kann die Aufgabe dahingehend erweitern, dass über 'z' hinaus
verschoben wird und das Alphabet von vorne beginnt.

Viel Spaß

Lösungen:

vote_ok
von eisheiliger (3750 Punkte) - 17.07.2021 um 19:13 Uhr
Quellcode ausblenden Python-Code

"""
#360: Ziffern durch Kleinbuchstaben ersetzen (right-shifting)
Ziel soll es sein, jede Ziffer durch einen Buchstaben zu ersetzen, indem der vorangestellte Buchstabe um den Wert der
Ziffer gemäß Alphabet nach rechts verschoben wird (right-shifting). Die Buchstaben bleiben dabei erhalten. Über 'z'
hinaus beginnt das Alphabet von vorne.
"""


def ri_shi(s):
    o = ""
    for i in range(1, len(s), 2):
        o += (s[i - 1])
        o += chr((ord(s[i - 1]) + int(s[i]) - 97) % 26 + 97)
    print(s, " -> ", o)


ri_shi("a1c1e1")
ri_shi("a4b2c1d5")
ri_shi("x9y8z7")


vote_ok
von Klaus (1940 Punkte) - 14.08.2021 um 22:53 Uhr
Quellcode ausblenden Python-Code
ALPHABET = "a b c d e f g h i j k l m n o p q r s t u v w x y z".split()

def decode(value):
    solution = ''
    temp_position = 0
    for char in value:
        if char.isalpha():
            temp_position = ALPHABET.index(char)
            solution += char
        else:
            solution += ALPHABET[(temp_position + int(char)) % 26]
    return solution

print(decode("a1c1e1"))
print(decode( "a4b2c1d5"))