@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)))