Есть ли способ генерировать случайные буквы в Python (например, random.randint, но для букв)? Функциональность диапазона random.randint была бы хороша, но иметь генератор, который просто выводит случайную букву, было бы лучше, чем ничего.
python
random
python-3.x
Куду
источник
источник
from string import ascii_letters, digits
иfrom random import choice
):''.join([choice(ascii_letters + digits) for i in range(32)])
>>> import random >>> import string >>> random.choice(string.ascii_letters) 'g'
источник
ascii_letters
,ascii_uppercase
иascii_lowercase
.>>>def random_char(y): return ''.join(random.choice(string.ascii_letters) for x in range(y)) >>>print (random_char(5)) >>>fxkea
для генерации y числа случайных символов
источник
''.join(random.sample(string.ascii_lowercase,5))
random.sample()
возвращает уникальный набор значений из ввода, который не совпадает сrandom.choice()
?random.choice
иrandom.randint
возвращают одно значение. Вы также можете использоватьnumpy.random.choice
для задания уникального набора, если добавите replace = False, например:numpy.random.choice(string.ascii_lowercase, size=5, replace=False)
>>> import random >>> import string >>> random.choice(string.ascii_lowercase) 'b'
источник
Другой способ, для полноты:
>>> chr(random.randrange(97, 97 + 26))
Используйте тот факт, что
ascii
«а» - это 97, а в алфавите 26 букв.Определяя верхнюю и нижнюю границы
random.randrange()
вызова функции, помните, чтоrandom.randrange()
это исключает ее верхнюю границу, что означает, что он будет генерировать только целое число до 1 единицы меньше предоставленного значения.источник
chr(random.randrange(97, 97 + 26 - 1))
?chr(random.randrange(97, 97 + 26)
.random.randrange()
является исключительным по своей верхней границе, что означает, что для получения всего диапазона символов97 - 122
переданный аргумент должен быть123
.97 + 26
используется.Вы можете использовать это, чтобы получить одну или несколько случайных букв
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']
источник
random.choices
?help(random.choices)
утверждает,If the relative weights or cumulative weights are not specified, the selections are made with equal probability.
что это означает, что распределение является дискретным равномерным распределением ( en.wikipedia.org/wiki/Discrete_uniform_distribution ).Вы можете просто составить список:
import random list1=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'] b=random.randint(0,7) print(list1[b])
источник
def randchar(a, b): return chr(random.randint(ord(a), ord(b)))
источник
import random def guess_letter(): return random.choice('abcdefghijklmnopqrstuvwxyz')
источник
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())
источник
Ты можешь использовать
map(lambda a : chr(a), np.random.randint(low=65, high=90, size=4))
источник
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))
Вы можете получить такие случайные строки:
источник
string.ascii_letters
2. Вы можете сохранить понимание списка, используяkeylist = random.choices(base_str(), k=KEY_LEN)
3. Почему наличиеbase_str
в качестве функции, а не в качествеbase_str = string.ascii_letters+string.digits
?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
источник
Все предыдущие ответы верны, если вы ищете случайные символы различных типов (т.е. буквенно-цифровые и специальные символы), то вот сценарий, который я создал, чтобы продемонстрировать различные типы создания случайных функций, он имеет три функции: одна для чисел, альфа- символы и специальные символы. Сценарий просто генерирует пароли и является лишь примером для демонстрации различных способов генерации случайных символов.
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))
Результат:
источник
ну это мой ответ! Это работает хорошо. Просто введите необходимое количество случайных букв в "число" ... (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)
источник
Мой слишком сложный фрагмент кода:
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')
По сути, он генерирует случайное число из 26, а затем преобразует его в соответствующую ему букву. Это явно можно улучшить, но я только новичок и горжусь этим фрагментом кода.
источник
print(chr(96 + letter))
, нетif
-elif
хрен нуженМожет быть, это поможет вам:
import random for a in range(64,90): h = random.randint(64, a) e += chr(h) print e
источник
@AAADCCEHFGJLDJF@EHFMHKWUR
Поместите питона на клавиатуру и позвольте ему кататься по буквам, пока вы не найдете желаемое случайное сочетание. Шучу!
import string #This was a design above but failed to print. I remodled it. import random irandom = random.choice(string.ascii_letters) print irandom
источник