#python #random #integer #character
#python #Случайный #целое #символ
Вопрос:
Мне нужно создать список случайных символов, которые генерируются из случайных чисел. В одном списке должны быть буквы, сгенерированные из случайных чисел, в то время как в другом списке будут буквы, которые уже есть в первом списке. Я видел метод импорта строк, который использует ascii, но я не до конца понимаю это. До сих пор я использовал метод случайного импорта и был в состоянии сгенерировать случайные числа, но я чувствую, что мой код слишком длинный и что должен быть более простой способ. Каждый раз, когда генерируется случайное число, программа должна преобразовать его в букву и добавить в список (называемый уникальным списком), только если число еще не присутствует в списке. Прекратите добавлять числа, как только список будет содержать 15 символов.
вот пример кода, который у меня есть на данный момент:
uniqueList = []
excludedList = []
count = 0
while (len(uniqueList)<15):
randomNumber = random.randint(*random.choice([(65,90), (97,122)]))
print(randomNumber)
if(randomNumber == 65):
letter = 'A'
if(randomNumber == 66):
letter = 'B'
if(randomNumber == 67):
letter = 'C'
if(randomNumber == 68):
letter = 'D'
if(randomNumber == 69):
letter = 'E'
if(randomNumber == 70):
вы можете сказать, что код длинный, поэтому я знаю, что должен быть более короткий способ
Комментарии:
1.
letter = chr(randomNumber)
?
Ответ №1:
Если вам нужно 15 уникальных букв в списке, вы могли бы сделать следующее:
import random
import string
letters = [i for i in string.ascii_lowercase]
random_list = random.sample(letters, 15)
print random_list
Это вернет что-то вроде:
['m', 's', 'r', 'f', 'x', 'l', 'e', 't', 'd', 'n', 'w', 'u', 'q', 'h', 'i']
Ответ №2:
Если вам просто нужен random letter
, вы можете упростить логику, используя random.choice()
как:
import string
import random
my_char = string.letters
random.choice(my_char)
# returns 'z'
где string.letters
будет возвращена строка из всех букв, т.е. 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
Ниже приведен модифицированный код, основанный на вашей логике кода (с использованием random.choice()
со случайным числом), как:
import string
import random
my_char = string.letters
# Value returned by string.letters:
# 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
randomNumber = random.randint(*random.choice([(65,90), (97,122)]))
if randomNumber >=65 and randomNumber <=90:
print my_char[randomNumber-65]
elif randomNumber >=97 and randomNumber <=122:
print my_char[randomNumber-97 26]
Ответ №3:
Поскольку c # знает значения в юникоде, вы можете использовать
letter=(char)randomNumber;
хотя случайное число между 97 и 122, как это было сделано при использовании, приведет к случайному использованию строчной буквы. Если вы хотите использовать заглавную букву случайным образом, как вы указали, загляните в таблицу Unicode для значений верхнего регистра unicode.
http://unicode-table.com/en /