Генерация случайной буквы в Python - PullRequest
118 голосов
/ 13 мая 2010

Есть ли способ генерировать случайные буквы в Python (например, random.randint, но для букв)? Функциональность диапазона в random.randint была бы хорошей, но иметь генератор, который просто выводит случайную букву, было бы лучше, чем ничего.

Ответы [ 19 ]

201 голосов
/ 13 мая 2010

Simple:

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

string.ascii_letters возвращает строку, содержащую строчные и прописные буквы в соответствии с текущей локалью.

random.choice возвращает один случайный элемент из последовательности.

69 голосов
/ 13 мая 2010
>>> import random
>>> import string
>>> random.choice(string.ascii_letters)
'g'
23 голосов
/ 01 августа 2012
>>>def random_char(y):
       return ''.join(random.choice(string.ascii_letters) for x in range(y))

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

для генерации y числа случайных символов

21 голосов
/ 13 мая 2010
>>> import random
>>> import string    
>>> random.choice(string.ascii_lowercase)
'b'
9 голосов
/ 13 мая 2010

Другой способ, для полноты:

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

Используйте тот факт, что ascii 'a' равно 97, и в алфавите 26 букв.

При определении верхней и нижней границы вызова функции random.randrange() следует помнить, что random.randrange() является исключительным для его верхней границы, то есть оно будет генерировать целое число только на 1 единицу меньше, чем указанное значение. *

4 голосов
/ 13 мая 2010
def randchar(a, b):
    return chr(random.randint(ord(a), ord(b)))
3 голосов
/ 04 ноября 2016
import random
def guess_letter():
    return random.choice('abcdefghijklmnopqrstuvwxyz')
3 голосов
/ 30 ноября 2017

Вы можете использовать это, чтобы получить одну или несколько случайных букв

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']
3 голосов
/ 16 июня 2017

Вы можете просто составить список:

import random
list1=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
b=random.randint(0,7)
print(list1[b])
1 голос
/ 18 апреля 2019
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())
...