Réponses:
Facile:
>>> import string
>>> string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> import random
>>> random.choice(string.ascii_letters)
'j'
string.ascii_letters
renvoie une chaîne contenant les lettres minuscules et majuscules en fonction des paramètres régionaux actuels.
random.choice
renvoie un élément aléatoire unique d'une séquence.
from string import ascii_letters, digits
et from random import choice
):''.join([choice(ascii_letters + digits) for i in range(32)])
>>> import random
>>> import string
>>> random.choice(string.ascii_letters)
'g'
ascii_letters
, ascii_uppercase
et ascii_lowercase
.
>>>def random_char(y):
return ''.join(random.choice(string.ascii_letters) for x in range(y))
>>>print (random_char(5))
>>>fxkea
pour générer y nombre de caractères aléatoires
''.join(random.sample(string.ascii_lowercase,5))
random.sample()
un ensemble unique de valeurs à partir de l'entrée, ce qui n'est pas le même que random.choice()
?
random.choice
et random.randint
retournent une seule valeur. Vous pouvez également utiliser numpy.random.choice
pour donner un ensemble unique si vous ajoutez replace = False, comme ceci:numpy.random.choice(string.ascii_lowercase, size=5, replace=False)
>>> import random
>>> import string
>>> random.choice(string.ascii_lowercase)
'b'
Une autre façon, par souci d'exhaustivité:
>>> chr(random.randrange(97, 97 + 26))
Utilisez le fait que ascii
«a» vaut 97 et qu'il y a 26 lettres dans l'alphabet.
Lors de la détermination de la limite supérieure et inférieure de l' random.randrange()
appel de fonction, rappelez-vous qu'elle random.randrange()
est exclusive sur sa limite supérieure, ce qui signifie qu'elle ne générera jamais qu'un entier jusqu'à 1 unité de moins que la valeur fournie.
chr(random.randrange(97, 97 + 26 - 1))
?
chr(random.randrange(97, 97 + 26)
. random.randrange()
est exclusif sur sa borne supérieure, ce qui signifie que pour obtenir toute la plage de caractères 97 - 122
, l'argument passé doit être 123
.
97 + 26
est utilisé.
Vous pouvez l'utiliser pour obtenir une ou plusieurs lettre (s) aléatoire (s)
import random
import string
random.seed(10)
letters = string.ascii_lowercase
rand_letters = random.choices(letters,k=5) # where k is the number of required rand_letters
print(rand_letters)
['o', 'l', 'p', 'f', 'v']
random.choices
?
help(random.choices)
déclare If the relative weights or cumulative weights are not specified, the selections are made with equal probability.
Cela signifierait que la distribution est la distribution uniforme discrète ( en.wikipedia.org/wiki/Discrete_uniform_distribution ).
def randchar(a, b):
return chr(random.randint(ord(a), ord(b)))
import random
def Random_Alpha():
l = ['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']
return l[random.randint(0,25)]
print(Random_Alpha())
Vous pouvez utiliser
map(lambda a : chr(a), np.random.randint(low=65, high=90, size=4))
import string
import random
KEY_LEN = 20
def base_str():
return (string.letters+string.digits)
def key_gen():
keylist = [random.choice(base_str()) for i in range(KEY_LEN)]
return ("".join(keylist))
Vous pouvez obtenir des chaînes aléatoires comme ceci:
g9CtUljUWD9wtk1z07iF
ndPbI1DDn6UvHSQoDMtd
klMFY3pTYNVWsNJ6cs34
Qgr7OEalfhXllcFDGh2l
string.ascii_letters
2. Vous pouvez sauvegarder la compréhension de la liste en utilisant keylist = random.choices(base_str(), k=KEY_LEN)
3. Pourquoi avoir base_str
comme fonction et pas a base_str = string.ascii_letters+string.digits
?
def create_key(key_len):
key = ''
valid_characters_list = string.letters + string.digits
for i in range(key_len):
character = choice(valid_characters_list)
key = key + character
return key
def create_key_list(key_num):
keys = []
for i in range(key_num):
key = create_key(key_len)
if key not in keys:
keys.append(key)
return keys
Toutes les réponses précédentes sont correctes, si vous recherchez des caractères aléatoires de différents types (c'est-à-dire des caractères alphanumériques et spéciaux), alors voici un script que j'ai créé pour démontrer différents types de création de fonctions aléatoires, il a trois fonctions une pour les nombres, alpha- caractères et caractères spéciaux. Le script génère simplement des mots de passe et n'est qu'un exemple pour illustrer différentes manières de générer des caractères aléatoires.
import string
import random
import sys
#make sure it's 3.7 or above
print(sys.version)
def create_str(str_length):
return random.sample(string.ascii_letters, str_length)
def create_num(num_length):
digits = []
for i in range(num_length):
digits.append(str(random.randint(1, 100)))
return digits
def create_special_chars(special_length):
stringSpecial = []
for i in range(special_length):
stringSpecial.append(random.choice('!$%&()*+,-.:;<=>?@[]^_`{|}~'))
return stringSpecial
print("how many characters would you like to use ? (DO NOT USE LESS THAN 8)")
str_cnt = input()
print("how many digits would you like to use ? (DO NOT USE LESS THAN 2)")
num_cnt = input()
print("how many special characters would you like to use ? (DO NOT USE LESS THAN 1)")
s_chars_cnt = input()
password_values = create_str(int(str_cnt)) +create_num(int(num_cnt)) + create_special_chars(int(s_chars_cnt))
#shuffle/mix the values
random.shuffle(password_values)
print("generated password is: ")
print(''.join(password_values))
Résultat:
eh bien, c'est ma réponse! Ça marche bien. Mettez simplement le nombre de lettres aléatoires que vous voulez dans 'nombre' ... (Python 3)
import random
def key_gen():
keylist = random.choice('abcdefghijklmnopqrstuvwxyz')
return keylist
number = 0
list_item = ''
while number < 20:
number = number + 1
list_item = list_item + key_gen()
print(list_item)
import string
import random
def random_char(y):
return ''.join(random.choice(string.ascii_letters+string.digits+li) for x in range(y))
no=int(input("Enter the number of character for your password= "))
li = random.choice('!@#$%^*&( )_+}{')
print(random_char(no)+li)
Mon morceau de code trop compliqué:
import random
letter = (random.randint(1,26))
if letter == 1:
print ('a')
elif letter == 2:
print ('b')
elif letter == 3:
print ('c')
elif letter == 4:
print ('d')
elif letter == 5:
print ('e')
elif letter == 6:
print ('f')
elif letter == 7:
print ('g')
elif letter == 8:
print ('h')
elif letter == 9:
print ('i')
elif letter == 10:
print ('j')
elif letter == 11:
print ('k')
elif letter == 12:
print ('l')
elif letter == 13:
print ('m')
elif letter == 14:
print ('n')
elif letter == 15:
print ('o')
elif letter == 16:
print ('p')
elif letter == 17:
print ('q')
elif letter == 18:
print ('r')
elif letter == 19:
print ('s')
elif letter == 20:
print ('t')
elif letter == 21:
print ('u')
elif letter == 22:
print ('v')
elif letter == 23:
print ('w')
elif letter == 24:
print ('x')
elif letter == 25:
print ('y')
elif letter == 26:
print ('z')
Il génère essentiellement un nombre aléatoire sur 26, puis se convertit en sa lettre correspondante. Cela pourrait être amélioré, mais je ne suis qu'un débutant et je suis fier de ce morceau de code.
print(chr(96 + letter))
, non if
- l' elif
enfer est nécessaire
Peut-être que cela peut vous aider:
import random
for a in range(64,90):
h = random.randint(64, a)
e += chr(h)
print e
@AAADCCEHFGJLDJF@EHFMHKWUR
Placez un python sur le clavier et laissez-le rouler sur les lettres jusqu'à ce que vous trouviez votre combo aléatoire préféré Je plaisante!
import string #This was a design above but failed to print. I remodled it.
import random
irandom = random.choice(string.ascii_letters)
print irandom