Python :: Aufgabe #61 :: Lösung #2

3 Lösungen Lösungen öffentlich
#61

Passwortgenerator mit Parametern

Anfänger - Python von pocki - 27.11.2014 um 18:11 Uhr
Erstelle ein Programm/Funktion welche/s ein zufälliges Passwort erzeugt.
Als Parameter soll die Länge sowie die Art der darin vorkommenden Zeichen übergeben werden können.
Zur Auswahl sollen stehen: Kleinbuchstaben, Großbuchstaben, Zahlen und Sonderzeichen.
Jede beliebige Kombination der Parameter soll möglich sein.
#2
vote_ok
von Nachbar (2820 Punkte) - 21.08.2016 um 13:55 Uhr
Quellcode ausblenden Python-Code
# -*- coding: utf-8 -*-

def pw(laenge, zeichen):
    from random import choice, shuffle
    kleinbuchstaben = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", \
    "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]
    grossbuchstaben = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", \
    "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]
    sonderzeichen = ["$", "%", "&", "*", "#", "~", "_", "@", "(", ")", "[", "]"]
    zahlen = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    p = []
    pfinal = ""
    x, y = 0, 0
    # Passwort generieren
    while x < laenge:
        if "k" in zeichen and x < laenge:
            p.append(choice(kleinbuchstaben))
            x = x + 1
        if "g" in zeichen  and x < laenge:
            p.append(choice(grossbuchstaben))
            x = x + 1
        if "z" in zeichen  and x < laenge:
            p.append(choice(zahlen))
            x = x + 1
        if "s" in zeichen  and x < laenge:
            p.append(choice(sonderzeichen))
            x = x + 1      
    shuffle(p)
    # Rückgabe als string       
    while y < laenge:
        pfinal = pfinal + str(p[y])
        y = y + 1
    return pfinal

# User input mit Ausnahmebehandlung
# Passwortlänge
z = 0
while z < 1:
    try:
        laenge = input("Wieviele Zeichen soll das Passwort enthalten?\n\n>> ")
        if laenge < 3:
            print "\nEin Passwort mit " + str(laenge) + " Zeichen ist unsinnig!\n"
        else:
            z = 1
    except:
        print "Ungueltige Eingabe!\n"
# Auswahl der Zeichen
print "\nAuswahlmöglichkeiten der zu enthaltenden Zeichen (Bsp. kgzs):"    
print "Kleinbuchstaben:\tk\nGrossbuchstaben:\tg\nZahlen:\t\tz\n\
Sonderzeichen:\ts\n"
while z > 0:
    try:
        zeichen = raw_input(">> ")
        if "k" not in zeichen and "g" not in zeichen and "z" not in zeichen\
and "s" not in zeichen:
            print "Ungueltige Eingabe!\n"
        else:
            z = 0
    except:
        print "Ungueltige Eingabe!\n"

# Ausgabe generiertes Passwort
print "\n\nDas generierte Passwort lautet: " +\
pw(laenge, zeichen)

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben