Seite 1 von 1
Ist das ein guter Code?
Verfasst: Dienstag 20. Oktober 2020, 14:43
von MaximalMax
Ich denke der Sinn des Codes ist selbsterklärend. Ich wollte mal fragen, ob das ein guter Code ist?
Code: Alles auswählen
import random
import string
characters = string.ascii_letters + string.digits
pw_characters = []
for _ in range(15):
character = random.choice(characters)
pw_characters.append(character)
password = ''.join(pw_characters)
print(password)
Danke im Vorraus für alle Antworten die ich bekommen werde

Re: Ist das ein guter Code?
Verfasst: Dienstag 20. Oktober 2020, 14:53
von Sirius3
Benutze keine Abkürzungen. random.choices hat einen Parameter k so dass die for-Schleife hinfällig wird.
Re: Ist das ein guter Code?
Verfasst: Dienstag 20. Oktober 2020, 14:54
von __blackjack__
@MaximalMax: Es ist nicht mit vier Leerzeichen pro Ebene eingerückt. Und man sollte keine kryptischen Abkürzungen verwenden. `password_characters` anstelle von `pw_characters`
Lässt sich auf jeden Fall vereinfachen.
Code: Alles auswählen
password_characters = []
for _ in range(15):
character = random.choice(characters)
password_characters.append(character)
Man muss `character` nicht an einen Namen binden:
Code: Alles auswählen
password_characters = []
for _ in range(15):
password_characters.append(random.choice(characters))
Jetzt lässt sich das einfach als „list comprehension“ schreiben:
Code: Alles auswählen
password_characters = [random.choice(characters) for _ in range(15)]
Und das kann man dann auch direkt beim `join()`-Aufruf einsetzen:
Code: Alles auswählen
password = "".join([random.choice(characters) for _ in range(15)])
Und die eckigen Klammern kann man auch weg lassen, weil ein Generatorausdruck statt einer Liste auch ausreicht:
Code: Alles auswählen
password = "".join(random.choice(characters) for _ in range(15))
Und vielleicht auch no `password` weglassen, bleibt insgesamt:
Code: Alles auswählen
#!/usr/bin/env python3
import random
import string
characters = string.ascii_letters + string.digits
print("".join(random.choice(characters) for _ in range(15)))
Re: Ist das ein guter Code?
Verfasst: Dienstag 20. Oktober 2020, 15:25
von Sirius3
Ohne for:
Code: Alles auswählen
#!/usr/bin/env python3
import random
import string
characters = string.ascii_letters + string.digits
password = "".join(random.choices(characters, k=15))
print(password)
Re: Ist das ein guter Code?
Verfasst: Dienstag 20. Oktober 2020, 19:45
von snafu
Wenn es sich wirklich auf die Bildschirmausgabe beschränkt, dann könnte man sogar join() weglassen: