2010-05-12 4 views
81

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

ответ

145

Простой:

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

string.letters возвращает строку, содержащую нижний регистр и заглавные буквы в соответствии с текущей локали; если это неприемлемо, string.ascii_letters, вероятно, сделает трюк.

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

+3

Это фактически string.ascii_lowercase или string.ascii_uppercase. –

+25

string.letters исчез после python 2.6. В python 3.1 вы должны использовать string.ascii_letters, который также присутствует в python 2.6 – joaquin

+4

Часто мне нужна строка randoms, вот что (после 'from string import ascii_letters, digitits' и' from random import choice'): ''' .join ([выбор (ascii_letters + цифры) для i в диапазоне (32)]) ' – Devin

54
>>> import random 
>>> import string 
>>> random.choice(string.ascii_letters) 
'g' 
+0

Это может быть нижний или верхний регистр. Не уверен, что это то, что нужно. –

7

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

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

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

+2

Это зависит от того, какой алфавит мы говорим ;-) – Joey

20
>>> import random 
>>> import string  
>>> random.choice(string.ascii_lowercase) 
'b' 
4
def randchar(a, b): 
    return chr(random.randint(ord(a), ord(b))) 
-3

Может быть, это может помочь вам:

import random 
for a in range(64,90): 
    h = random.randint(64, a) 
    e += chr(h) 
print e 
19
>>>def random_char(y): 
     return ''.join(random.choice(string.ascii_letters) for x in range(y)) 

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

генерировать у числа случайных символов

+5

также: '. '.join (random.sample (string.ascii_lowercase, 5))' – Dannid

+0

@Dannid Не случайно.sample() 'return a * unique * набор значений из ввода, который не совпадает с' random.choice() '? – Droppy

+0

Да, хотя, если вы выбираете только одну букву, которая не имеет значения. Кроме того, вам может понадобиться 5 уникальных букв - OP не указал, и оба «random.choice» и «random.randint» возвращают a одно значение. Вы также можете использовать 'numpy.random.choice', чтобы дать уникальный набор, если вы добавите replace = False, например:' numpy.random.choice (string.ascii_lowercase, size = 5, replace = False) ' – Dannid

-6

Место питона на клавиатуре, и пусть пролонгировать буквами пока вы не найдете свой предпочитаемый случайный комбо. Просто шутите!

import string #This was a design above but failed to print. I remodled it. 
import random 
irandom = random.choice(string.ascii_letters) 
print irandom 
+2

Добро пожаловать в Stack Переполнение! Хотя это хороший ответ, он является однозначным для уже опубликованного и принятого ответа от @MarkRushakoff, ответил два года назад. Перед отправкой просмотрите ответы, чтобы мы могли снизить отношение сигнал/шум. – Hooked

-1
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)) 

Вы можете получить случайные строки, как это:

g9CtUljUWD9wtk1z07iF 
ndPbI1DDn6UvHSQoDMtd 
klMFY3pTYNVWsNJ6cs34 
Qgr7OEalfhXllcFDGh2l 
2
import random 
def guess_letter(): 
    return random.choice('abcdefghijklmnopqrstuvwxyz') 
2

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

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

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

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'] 
+0

Это улучшит качество вашего ответа, если вы поместите некоторую информацию о том, что вы сделали. Также, поскольку у этого вопроса есть принятый ответ, почему ваше решение отличается от другого. –

-1

ну, это мой ответ! Это работает хорошо. Просто поместите число случайных букв вы хотите в 'числа' ... (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) 
-2
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('[email protected]#$%^*&()_+}{') 
print(random_char(no)+li) 
+1

Вы должны отформатировать и описать свой ответ – ted

Смежные вопросы