Генерация случайной Буквы в Python
есть ли способ генерировать случайные буквы в Python (например, random.randint но для письма)? Функциональность диапазона случайных.randint было бы неплохо, но иметь генератор, который просто выводит случайную букву, было бы лучше, чем ничего.
17 ответов:
просто:
>>> import string >>> string.letters 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' >>> import random >>> random.choice(string.letters) 'j'
string.letters
возвращает строку, содержащую строчные и прописные буквы в соответствии с текущим языком; если это не приемлемо,string.ascii_letters
вероятно, будет делать трюк.
random.choice
возвращает один случайный элемент из последовательности.
>>>def random_char(y): return ''.join(random.choice(string.ascii_letters) for x in range(y)) >>>print (random_char(5)) >>>fxkea
чтобы сгенерировать y количество случайных символов
другой способ, для полноты:
>>> chr(random.randrange(97, 97 + 26 + 1))
использовать тот факт, что
ascii
' a ' - 97, и в алфавите есть 26 букв.
вы можете просто составить список:
import random list1=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'] b=random.randint(0,7) print(list1[b])
вы можете использовать это, чтобы получить одну или несколько случайных букв
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']
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
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, а затем преобразует его в соответствующее письмо. Это может быть демонстративно улучшено, но я только новичок, и я горжусь этим куском кода.