Python :: Aufgabe #360
2 Lösungen
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ß
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:
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")
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"))