Python :: Aufgabe #61

3 Lösungen Lösungen öffentlich

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.

Lösungen:

vote_ok
von jigga (4260 Punkte) - 17.05.2015 um 21:39 Uhr
Quellcode ausblenden Python-Code
import random, string
random.seed()
inhalt = ''

z = input("Laenge: ")
laenge = int(z)
klein = input("Kleinbuchstabe (j/n): ")
gross = input("Grossbuchstaben (j/n): ")
zahl = input("Zahlen (j/n): ")
zeichen = input("Sonderzeichen (j/n): ")

if klein == 'j':
	inhalt += string.ascii_lowercase
if gross == 'j':
	inhalt += string.ascii_uppercase
if zahl == 'j':
	inhalt += '0123456789'
if zeichen == 'j':
	inhalt += '''`~!@#$%^&*()_+-=][';}{":/.,<>?"}'''

pw = ''.join(random.choice(inhalt) for i in range(laenge))
print("Passwort:", pw)
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)
vote_ok
von Kotgreifer (1100 Punkte) - 22.01.2020 um 10:55 Uhr
Quellcode ausblenden Python-Code
import random

kleinB='qwertzuiopüasdfghjklöäyxcvbnm'
kleinB=list(kleinB)
großB='QWERTZUIOPÜASDFGHJKLÖÄYXCVBNM'
großB=list(großB)
sonderZ='!"§$%&/()=?*+#-.,;:_<>'
sonderZ=list(sonderZ)

length= input("Länge des Passworts: ")
kB= True if input("Klein Buchstaben?(y/n): ")=="y" else False
gB= True if input("Große Buchstaben?(y/n): ")=="y" else False
sZ= True if input("Sonderzeichen?(y/n): ")=="y" else False

paramterListe= []
if kB:
    paramterListe.append(kleinB)
if gB:
    paramterListe.append(großB)
if sZ:
    paramterListe.append(sonderZ)


pw=""
for i in range(0,int(length)):
    pw+=random.choice(random.choice(paramterListe))
print("Passwort: "+pw)