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
1801005

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.