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

Nummern für Zahlen

Beitragvon murph » 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:

Beitragvon modelnine » 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:

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

Beitragvon Leonidas » 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:

Beitragvon murph » Mittwoch 26. April 2006, 16:02

Das erkenne ich doch schon viel schneller!

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder