Seite 1 von 1
Nummern für Zahlen
Verfasst: Mittwoch 26. April 2006, 13:33
von murph
Ich will mir ein automatisches Passwort generieren lassen,
dafür will ich direkt auf die ASCII-Tabelle zugreifen, um mit Zahlen eine while-Schleife durchlaufen zu lassen, damit alle Zeichen (bis auf die Steuerzeichen) verwendet werden. Meine einzige gefundene Lösung wäre, binascii zu importieren und über binärzahlen die einzelnen Zeichen anzusprechen. Weil dieses aber etwas unsauber ist, suche ich nach einer anderen Methode. Hat von euch einer einen Einfall?
Verfasst: Mittwoch 26. April 2006, 13:38
von modelnine
Was ein Zeichen ist, ist nicht umbedingt so ganz eindeutig. Im Normalfall willst Du wahrscheinlich sowas wie:
Code: Alles auswählen
from string import ascii_letters, digits
from random import randrange
items = ascii_letters + digits
itemslen, pwdlen = len(items), 10
pwd = "".join(items[randrange(itemslen)] for i in range(pwdlen))
print pwd
Das ganze kann man natürlich auch in einer expliziten For-Schleife schreiben, nicht mit einer Generator-Expression.
Und, unabhängig davon: pydoc string zeigt Dir noch ein paar mehr Zeichen-Klassen die in string definiert sind.
Verfasst: Mittwoch 26. April 2006, 13:45
von murph
Danke!
Das habe ich gesucht, das sieht auch viel anspruchsvoller als meine binärversion aus!
Frage: Wie würde join(items[randrange(itemslen)] for i in range(pwdlen))
in der auseinandergezogenden Vaiante aussehen? Wann wird i näher definiert?
Verfasst: Mittwoch 26. April 2006, 14:59
von Leonidas
murph hat geschrieben:Frage: Wie würde join(items[randrange(itemslen)] for i in range(pwdlen)) in der auseinandergezogenden Vaiante aussehen?
Etwa so:
Code: Alles auswählen
pwd = ''
for i in range(pwdlen):
pwd += items[randrange(itemslen)]
murph hat geschrieben:Wann wird i näher definiert?
Ist doch schon definiert, als Zahl welche range() ausgegeben hat.
Verfasst: Mittwoch 26. April 2006, 16:02
von murph
Das erkenne ich doch schon viel schneller!