Nummern für Zahlen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

Mittwoch 26. April 2006, 13:33

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?
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Mittwoch 26. April 2006, 13:38

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.
--- Heiko.
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

Mittwoch 26. April 2006, 13:45

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?
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 26. April 2006, 14:59

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

Mittwoch 26. April 2006, 16:02

Das erkenne ich doch schon viel schneller!
Antworten