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.

92
demandé sur joaquin 2010-05-13 02:48:44

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.

166
répondu Mark Rushakoff 2010-05-12 22:51:54
>>> import random
>>> import string
>>> random.choice(string.ascii_letters)
'g'
58
répondu joaquin 2010-05-12 22:52:59
>>> import random
>>> import string    
>>> random.choice(string.ascii_lowercase)
'b'
20
répondu Taylor Leese 2010-05-12 22:55:09
>>>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

20
répondu Saad 2012-10-02 08:51:53

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.

8
répondu rlotun 2010-05-12 22:55:05
def randchar(a, b):
    return chr(random.randint(ord(a), ord(b)))
4
répondu Florian Diesch 2010-05-12 22:58:47
import random
def guess_letter():
    return random.choice('abcdefghijklmnopqrstuvwxyz')
3
répondu Toby 2016-11-04 21:21:58

, 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])
2
répondu Athreya 2018-05-06 10:42:16

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']
1
répondu athraa 2017-12-01 15:54:09
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
0
répondu 王孝先 2016-03-25 03:24:23
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
0
répondu user9739613 2018-05-04 07:15:59

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:

entrez la description de l'image ici

0
répondu CPU 100 2018-09-25 03:50:40

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)
-1
répondu David W. Beck 2018-01-11 12:06:55
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)
-1
répondu Jack Honor 2018-02-13 17:51:21

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.

-1
répondu Nit Nurray 2018-09-25 02:03:24

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
-3
répondu peter 2015-12-24 15:41:34

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
-6
répondu Chirstian Bolovinchi 2012-08-09 03:42:25