2017-09-18 3 views
1

Une explication serait puissamment utile. En particulier, la ligne de la bouclePourriez-vous expliquer ce code, ligne 8 en particulier? celui avec la boucle dedans?

import string 
from random import * 

letters = string.ascii_letters 
digits = string.digits 
symbols = string.punctuation 
chars = letters + digits + symbols 

min_length = 8 
max_length = 16 
password = "".join(choice(chars) for x in range(randint(min_length, max_length))) 
print(password) 
+0

En peu de temps, générez une chaîne de longueur minimale de 8 et 16 maximum contenant des lettres, des chiffres et des symboles. – Arman

+1

La ligne 8 est une ligne vide :) – quinz

Répondre

1

Ceci est équivalent à la ligne avec la for. J'espère que cela t'aides.

# We will temporally store the password character in this list 
password_chars = [] 

# Choose a random length for the password 
password_length = randint(min_length, max_length) 

# Choose `password_length` random chars for the password 
for x in range(password_length): 
    # Randomly choose a character from the valid password characters 
    random_valid_character = choice(chars) 
    # Add the random valid character to the password characters list 
    password_chars.append(random_valid_character) 

# Join the password character list to form a string 
password = ''.join(password_chars) 

Le code que vous avez fourni utilise list comprehension pour écrire la même boucle d'une manière plus courte, en sacrifiant la lisibilité pour la brièveté (on pourrait dire).

1
import string 
from random import * 

#Strings of ascii letters, digits, and punctuation 
letters = string.ascii_letters 
digits = string.digits 
symbols = string.punctuation 
#A string combining letters, digits and symbols 
chars = letters + digits + symbols 

min_length = 8 
max_length = 16 

#In the range of a random integer between min_length and max_length... 
#Choose a random character from the string chars... 
#And join the list containing those random characters into one string 
password = "".join(choice(chars) for x in range(randint(min_length, max_length))) 
print(password) 
0

EN LIGNE PAR LIGNE

import string: Importe le module de chaîne

from random import *: Importations tout à partir du module aléatoire

letters = string.ascii_letters: Magasins dans une liste toutes les lettres ascii

digits = string.digits: Magasins dans une liste tous les digist (0-9)

symbols = string.punctuation: Magasins dans une liste tous les signes de ponctuation

chars = letters + digits + symbols: rejoint les trois dernières listes

min_length = 8: permet de définir la longueur minimale du mot de passe à 8

max_length = 16: Définit la longueur maximale du mot de passe à 16

password = "".join(choice(chars) for x in range(randint(min_length, max_length))): Celui-ci est plus complexe.

  • randint(min_length, max_length) retours et nombre entier compris entre la longueur minimale et maximale

  • range() retourne une liste comme [0,1,2 ... x-1] où x est la longueur du mot de passe à partir de la Référence précédente

  • for x in range cycles à travers chaque élément de la liste précédente d'entiers [0,1,2 ... x-1], de sorte que, en bref, un cycle par caractère dans le mot de passe

  • choice(chars) choisit un caractère de manière aléatoire parmi les caractères de liste

  • "".join(). Not thanhat, à ce stade, nous avons une liste de caractères choisis au hasard, avec une longueur entre 8 et 16. Join met tous les caractères ensemble dans une chaîne, se sépare par "" (chaîne vide, donc les met ensemble)

0

Le code entier est en fait un code de base pour créer des mots de passe. Pour créer un mot de passe, nous avons d'abord besoin des éléments suivants: chiffres, alphabets, caractères.

Une fois que nous avons les unités prêtes, le code définit le maximum et la longueur minimale du mot de passe

Enfin, dans la pour une partie de la boucle, le code génère une liste de longueur aléatoire entre le max_length et min_length. Ainsi, chaque fois que vous exécutez, un nouveau mot de passe de longueur différente est créé.