Générer une lettre aléatoire en Python
Existe-t-il un moyen de générer des lettres aléatoires en Python (comme random.randint mais pour les lettres)? La fonctionnalité de plage de Aléatoire.randint serait bien, mais avoir un générateur qui produit juste une lettre aléatoire serait mieux que rien.
17 réponses
Simple:
>>> import string
>>> string.letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> import random
>>> random.choice(string.letters)
'j'
string.letters
renvoie une chaîne contenant les lettres minuscules et majuscules en fonction des paramètres régionaux actuels; si cela n'est pas acceptable, string.ascii_letters
va probablement faire l'affaire.
random.choice
retourne un seul élément aléatoire à partir d'une séquence.
>>> import random
>>> import string
>>> random.choice(string.ascii_letters)
'g'
>>> import random
>>> import string
>>> random.choice(string.ascii_lowercase)
'b'
>>>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
Une autre façon, pour l'exhaustivité:
>>> chr(random.randrange(97, 97 + 26 + 1))
Utilisez le fait que ascii
' a ' est 97, et il y a 26 lettres dans l'alphabet.
def randchar(a, b):
return chr(random.randint(ord(a), ord(b)))
import random
def guess_letter():
return random.choice('abcdefghijklmnopqrstuvwxyz')
, Vous pouvez simplement faire une liste:
import random
list1=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
b=random.randint(0,7)
print(list1[b])
Vous pouvez l'utiliser pour obtenir une ou plusieurs lettres aléatoires
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(letters)
['o', 'l', 'p', 'f', 'v']
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
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 cherchez 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, les caractères alpha et les caractères spéciaux. Le script génère simplement des mots de passe et n'est qu'un exemple pour démontrer diverses façons 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! Il fonctionne bien. Mettez juste le nombre de lettres aléatoires que vous voulez dans "numéro"... (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 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.
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
Placez un python sur le clavier et laissez-le rouler sur les lettres jusqu'à ce que vous trouviez votre combo aléatoire preferd 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