Hi hab als Hausaufgabe folgende aufgabe:
2) Verschlüsselung:
Schreibe eine Funktion „Verstecke“ mit 2 Argumenten „s“ und „n“, die einen Klartext auf folgende Weise unleserlich macht:
a) Die Zeichenkette wird in Großbuchstaben umgewandelt.
b) Hinter diese Zeichen werden n zufällige Großbuchstaben eingefügt.
c) Das Argument ist optional. Defaultwert: n=1
Eine Entschlüsselung soll auch enthalten sein!
nun hab ich ein problem bei der b) nämlich bei dem Wörtchen "zufällig"
hab schon ein paar wörter wie "random" ausprobiert aber niochts hat funktioniert. hat jemand ne idee wie man das in Python "dem Zufall überlässt". Ich dneke mal ich muss ne Liste mit allen Buchstaben machn und dann iwie zufällig auf diese zugreifen.
zufall!
hab jetzt ein bisschen rumexprimentiert aber iwie will das nicht funzen weil er mir immer ausgibt das es den befel "random()" nicht gibt.
Code: Alles auswählen
>>> Alphabeth= ["A","B","C","D","E","F","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]
>>> random(Alphabeth)
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
random(Alphabeth)
NameError: name 'random' is not defined
Du hast ihn wohl nicht importiert?!
Probiers mal so und lies noch ein bisschen Tutorial nebenher.
Probiers mal so und lies noch ein bisschen Tutorial nebenher.
Code: Alles auswählen
import random
random.choice(Alphabeth)
Ich konnte nicht widerstehen.
Code: Alles auswählen
from itertools import islice
from random import choice
from string import ascii_uppercase
def iter_random_uppercase():
while True:
yield choice(ascii_uppercase)
def encode(text, n=1):
random_uppercase = iter_random_uppercase()
for character in (c.upper() for c in text):
yield character
for character in islice(random_uppercase, n):
yield character
def decode(text, n=1):
return islice(text, None, None, n + 1)
Wirf doch einen Blick in die Dokumentation. Dann sparst du auch gleich das Raten von irgendwelchen Befehlen. Den Vorschlag von BlackJack solltest du nicht allzu ernst nehmen . Mit den Dir bekannten Mitteln bekommst du es sicher auch hin.
Edit: Typo-Tag ! War ja echt grausam
Edit: Typo-Tag ! War ja echt grausam
Zuletzt geändert von EyDu am Montag 15. September 2008, 21:01, insgesamt 2-mal geändert.
Wenn yield aufgerufen wird, wird der Wert "return"ed und die funktion(generator) angehalten. Man kann den nächsten Wert dann mit .next() bekommen.Basti91 hat geschrieben:was bewirkt denn das yield und das islice ...sry aber hab ich noch nie gesehen
islice liefert ein slice Object über das man iterieren kann. Du kennst vielleicht ["foo", "bar"][0:2] um bestimmte Elemente aus Sequenzen zu bekommen, im Prinzip ist dass das gleiche.
Ich werf mal http://www.python-forum.de/topic-1689.html in die Runde.
Ohloh | Mein Blog | Jabber: segfaulthunter@swissjabber.eu | asynchia – asynchrone Netzwerkbibliothek
In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.
In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ist denn heute Typo-Tag? Erst les ich Schwirigkeiten bei Python und dann kommen hier "Befhele". Heute haben es wohl einige erst genommen, noch mehr Tippfehler zu machen als ich normalerweise
Letzten Endes kann man natürlich auch BlackJacks Lösung nehmen, sofern man weiß wie sie geht und dem Lehrer auf Anfrage auch erklären und modifizieren kann (falls er glaubt dass man die Erklärung auswendig kann). Allerdings ist es wohl einfacher, das Problem selbst zu lösen, dann gibt es auch keine Verdachtsmomente.
Letzten Endes kann man natürlich auch BlackJacks Lösung nehmen, sofern man weiß wie sie geht und dem Lehrer auf Anfrage auch erklären und modifizieren kann (falls er glaubt dass man die Erklärung auswendig kann). Allerdings ist es wohl einfacher, das Problem selbst zu lösen, dann gibt es auch keine Verdachtsmomente.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice