data = """Hewlett-Packard Company, Year 2000 Financial Report end""" data = data.split("\n") for line in data: ''' Das könnte man auch in eine Funktion packen, jedenfalls wird hier die Message verschlüsselt... ''' # Um es mir einfach zu machen habe ich # zusätzlich zu den Großbuchstaben # auch die Kleinbuchstaben ins Code- # Wörterbuch aufgenommen... codes = {"A":"*", "a":"*", "E":"$", "e":"$", "I":"#", "i":"#", "O":"!", "o":"!", "U":"%", "u":"%", "Y":"^", "y":"^"} if line == "end": pass else: for key in codes.keys(): line = line.replace(key,codes[key]) print(line)Alternativ hätte man die Message Buchstabe für Buchstabe durchlaufen können und prüfen können, ob Buchstabe.upper() im Wörterbuch steht und die Daten dann entsprechend z. B. an eine Liste anhängen können. Das Ergebnis würde dann codiert zurückgegeben werden. Für 2 Punkte darf man es sich wohl einfacher machen.
Montag, 11. Februar 2013
Secret Code
Eine einfache Verschlüsselungsübung, die ich mir noch einfacher gemacht habe. Das Skript ist zugleich Lösung für eine Aufgabenstellung des HP Codewars 2001:
Abonnieren
Kommentare zum Post (Atom)
Ein ``pass`` in einem ``if`` oder ``else``-Zweig ist unschön. Bei ``else`` ist der Zweig überflüssig und bei ``if`` möchte man eigentlich die Bedingung negieren und den ``else``-Zweig im ``if`` haben.
AntwortenLöschenWenn man Schlüssel/Wert-Paare braucht, dann kann man gleich über `iteritems()` (Python 2.x) oder `items()` (Python 3.x) iterieren. Oder eine Liste mit Tupel (alt, neu) anstatt eines Wörterbuchs verwenden.
Alternativ wäre hier die `string.maketrans()`-Funktion und die `translate()`-Methode auf Zeichenketten einen Blick wert.