Jawaban:
Sederhana:
>>> import string
>>> string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> import random
>>> random.choice(string.ascii_letters)
'j'
string.ascii_letters
mengembalikan string yang berisi huruf kecil dan huruf besar sesuai dengan lokal saat ini.
random.choice
mengembalikan elemen acak tunggal dari suatu urutan.
from string import ascii_letters, digits
dan 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
, dan ascii_lowercase
.
>>>def random_char(y):
return ''.join(random.choice(string.ascii_letters) for x in range(y))
>>>print (random_char(5))
>>>fxkea
untuk menghasilkan sejumlah karakter acak
''.join(random.sample(string.ascii_lowercase,5))
random.sample()
mengembalikan seperangkat nilai unik dari input, yang tidak sama dengan random.choice()
?
random.choice
dan random.randint
mengembalikan nilai tunggal. Anda juga dapat menggunakan numpy.random.choice
untuk memberikan set unik jika Anda menambahkan ganti = Salah, seperti:numpy.random.choice(string.ascii_lowercase, size=5, replace=False)
>>> import random
>>> import string
>>> random.choice(string.ascii_lowercase)
'b'
Cara lain, untuk kelengkapan:
>>> chr(random.randrange(97, 97 + 26))
Gunakan fakta bahwa ascii
'a' adalah 97, dan ada 26 huruf dalam alfabet.
Saat menentukan batas atas dan bawah dari random.randrange()
pemanggilan fungsi, ingatlah bahwa random.randrange()
itu eksklusif pada batas atasnya, artinya hanya akan menghasilkan bilangan bulat hingga 1 unit lebih sedikit dari nilai yang diberikan.
chr(random.randrange(97, 97 + 26 - 1))
?
chr(random.randrange(97, 97 + 26)
. random.randrange()
bersifat eksklusif pada batas atasnya, yang berarti bahwa untuk mendapatkan seluruh jajaran karakter 97 - 122
, argumen yang dilewati haruslah 123
.
97 + 26
digunakan.
Anda dapat menggunakan ini untuk mendapatkan satu atau lebih huruf acak
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)
menyatakan If the relative weights or cumulative weights are not specified, the selections are made with equal probability.
Ini berarti, bahwa distribusinya adalah distribusi seragam diskrit ( en.wikipedia.org/wiki/Discrete_uniform_distribution ).
def randchar(a, b):
return chr(random.randint(ord(a), ord(b)))
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())
Kamu bisa memakai
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))
Anda bisa mendapatkan string acak seperti ini:
g9CtUljUWD9wtk1z07iF
ndPbI1DDn6UvHSQoDMtd
klMFY3pTYNVWsNJ6cs34
Qgr7OEalfhXllcFDGh2l
string.ascii_letters
2. Anda dapat menyimpan pemahaman daftar dengan menggunakan keylist = random.choices(base_str(), k=KEY_LEN)
3. Mengapa memiliki base_str
fungsi dan bukan 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
Semua jawaban sebelumnya benar, jika Anda mencari karakter acak dari berbagai jenis (yaitu karakter alfanumerik dan khusus) maka di sini adalah skrip yang saya buat untuk menunjukkan berbagai jenis membuat fungsi acak, ia memiliki tiga fungsi satu untuk angka, alfa karakter dan karakter khusus. Script hanya menghasilkan kata sandi dan hanya sebuah contoh untuk menunjukkan berbagai cara menghasilkan karakter acak.
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))
Hasil:
baiklah, ini jawaban saya! Ini bekerja dengan baik. Cukup masukkan jumlah huruf acak yang Anda inginkan di 'angka' ... (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)
Sepotong kode saya yang terlalu rumit:
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')
Ini pada dasarnya menghasilkan nomor acak dari 26 dan kemudian mengubahnya menjadi huruf yang sesuai. Ini bisa diperbaiki tapi saya hanya pemula dan saya bangga dengan kode ini.
print(chr(96 + letter))
, tidak if
- elif
neraka diperlukan
Mungkin ini bisa membantu Anda:
import random
for a in range(64,90):
h = random.randint(64, a)
e += chr(h)
print e
@AAADCCEHFGJLDJF@EHFMHKWUR
Tempatkan python pada keyboard dan biarkan dia menggulung surat-surat sampai Anda menemukan kombo acak preferd Anda Hanya bercanda!
import string #This was a design above but failed to print. I remodled it.
import random
irandom = random.choice(string.ascii_letters)
print irandom