Câu trả lời:
Đơn giản:
>>> import string
>>> string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> import random
>>> random.choice(string.ascii_letters)
'j'
string.ascii_letters
trả về một chuỗi chứa chữ thường và chữ in hoa theo ngôn ngữ hiện tại.
random.choice
trả về một yếu tố duy nhất, ngẫu nhiên từ một chuỗi.
from string import ascii_letters, digits
và 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
và ascii_lowercase
.
>>>def random_char(y):
return ''.join(random.choice(string.ascii_letters) for x in range(y))
>>>print (random_char(5))
>>>fxkea
để tạo y số ký tự ngẫu nhiên
''.join(random.sample(string.ascii_lowercase,5))
random.sample()
trả về một bộ giá trị duy nhất từ đầu vào, không giống với random.choice()
?
random.choice
và random.randint
trả về một giá trị. Bạn cũng có thể sử dụng numpy.random.choice
để cung cấp một bộ duy nhất nếu bạn thêm thay thế = Sai, như vậy:numpy.random.choice(string.ascii_lowercase, size=5, replace=False)
>>> import random
>>> import string
>>> random.choice(string.ascii_lowercase)
'b'
Một cách khác, cho sự hoàn chỉnh:
>>> chr(random.randrange(97, 97 + 26))
Sử dụng thực tế là ascii
'a' là 97 và có 26 chữ cái trong bảng chữ cái.
Khi xác định giới hạn trên và dưới của lệnh random.randrange()
gọi hàm, hãy nhớ rằng nó random.randrange()
là độc quyền ở giới hạn trên của nó, nghĩa là nó sẽ chỉ tạo ra một số nguyên ít hơn 1 đơn vị so với giá trị được cung cấp.
chr(random.randrange(97, 97 + 26 - 1))
?
chr(random.randrange(97, 97 + 26)
. random.randrange()
là độc quyền trên giới hạn trên của nó, có nghĩa là để có được toàn bộ phạm vi các ký tự 97 - 122
, đối số được truyền phải là 123
.
97 + 26
được sử dụng.
Bạn có thể sử dụng điều này để nhận một hoặc nhiều chữ cái ngẫu nhiên
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
gì?
help(random.choices)
tuyên bố If the relative weights or cumulative weights are not specified, the selections are made with equal probability.
Điều này có nghĩa là, phân phối là phân phối thống nhất rời rạc ( en.wikipedia.org/wiki/Discittle_uniform_distribution ).
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())
Bạn có thể dùng
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))
Bạn có thể nhận được các chuỗi ngẫu nhiên như thế này:
g9CtUljUWD9wtk1z07iF
ndPbI1DDn6UvHSQoDMtd
klMFY3pTYNVWsNJ6cs34
Qgr7OEalfhXllcFDGh2l
string.ascii_letters
2. Bạn có thể lưu mức độ hiểu danh sách bằng cách sử dụng keylist = random.choices(base_str(), k=KEY_LEN)
3. Tại sao phải có base_str
chức năng mà không phải là một 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
Tất cả các câu trả lời trước đều đúng, nếu bạn đang tìm kiếm các ký tự ngẫu nhiên thuộc nhiều loại khác nhau (ví dụ như chữ và số và ký tự đặc biệt) thì đây là tập lệnh mà tôi đã tạo để thể hiện các loại tạo hàm ngẫu nhiên khác nhau, nó có ba hàm một cho các số, alpha- nhân vật và nhân vật đặc biệt. Kịch bản chỉ đơn giản là tạo mật khẩu và chỉ là một ví dụ để thể hiện nhiều cách tạo ký tự ngẫu nhiên khác nhau.
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))
Kết quả:
tốt, đây là câu trả lời của tôi Nó hoạt động tốt. Chỉ cần đặt số lượng chữ cái ngẫu nhiên bạn muốn vào 'số' ... (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)
Đoạn mã quá phức tạp của tôi:
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')
Về cơ bản, nó tạo ra một số ngẫu nhiên trong số 26 và sau đó chuyển đổi thành chữ cái tương ứng. Điều này có thể được cải thiện một cách thách thức nhưng tôi chỉ là người mới bắt đầu và tôi tự hào về đoạn mã này.
print(chr(96 + letter))
, không if
- elif
địa ngục là cần thiết
Đặt một con trăn trên bàn phím và để anh ta cuộn các chữ cái cho đến khi bạn tìm thấy kết hợp ngẫu nhiên ưa thích của bạn Chỉ đùa thôi!
import string #This was a design above but failed to print. I remodled it.
import random
irandom = random.choice(string.ascii_letters)
print irandom