web-dev-qa-db-fra.com

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 random.randint serait agréable, mais il serait préférable d’avoir un générateur ne produisant que des lettres aléatoires.

105
Kudu

Simple:

>>> import string
>>> string.letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> import random
>>> random.choice(string.letters)
'j'

string.letters retourne une chaîne contenant les lettres minuscules et majuscules en fonction des paramètres régionaux en vigueur; si ce n'est pas acceptable, string.ascii_letters fera probablement l'affaire.

random.choice retourne un seul élément aléatoire d'une séquence.

182
Mark Rushakoff
>>> import random
>>> import string
>>> random.choice(string.ascii_letters)
'g'
67
joaquin
>>>def random_char(y):
       return ''.join(random.choice(string.ascii_letters) for x in range(y))

>>>print (random_char(5))
>>>fxkea

générer un nombre y de caractères aléatoires 

22
Saad
>>> import random
>>> import string    
>>> random.choice(string.ascii_lowercase)
'b'
21
Taylor Leese

Une autre façon, pour être complet:

>>> chr(random.randrange(97, 97 + 26 + 1))

Utilisez le fait que ascii 'a' vaut 97 et qu'il y a 26 lettres dans l'alphabet.

8
rlotun
def randchar(a, b):
    return chr(random.randint(ord(a), ord(b)))
4
Florian Diesch
import random
def guess_letter():
    return random.choice('abcdefghijklmnopqrstuvwxyz')
3
Toby

Vous pouvez juste faire une liste:

import random
list1=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
b=random.randint(0,7)
print(list1[b])
3
Athreya

Vous pouvez utiliser ceci 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(letters)

['o', 'l', 'p', 'f', 'v']
2
salhin
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())
1
Vaibhav Pthak

Vous pouvez utiliser

map(lambda a : chr(a),  np.random.randint(low=65, high=90, size=4))
0
Ankit Agrawal
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
user9739613
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
王孝先

Toutes les réponses précédentes sont correctes. Si vous recherchez des caractères aléatoires de différents types (par exemple des caractères alphanumériques et des caractères spéciaux), voici un script que j'ai créé pour illustrer différents types de création de fonctions aléatoires. Il comporte trois fonctions, l'une pour les nombres, alpha- personnages et caractères spéciaux. Le script génère simplement des mots de passe et constitue juste 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:

 enter image description here

0
grepit