有没有办法在Python中生成随机字母(类似于random.randint但是生成字母)?像random.randint的范围功能很好,但如果有一个仅输出随机字母的生成器会更好。
有没有办法在Python中生成随机字母(类似于random.randint但是生成字母)?像random.randint的范围功能很好,但如果有一个仅输出随机字母的生成器会更好。
简单:
>>> import string
>>> string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> import random
>>> random.choice(string.ascii_letters)
'j'
string.ascii_letters
返回一个包含当前语言环境下大小写字母的字符串。
random.choice
从序列中随机返回一个元素。
>>> import random
>>> import string
>>> random.choice(string.ascii_letters)
'g'
ascii_letters
、ascii_uppercase
和ascii_lowercase
。 - Uvuvwevwevwe>>>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))
,意思是从小写字母表中随机抽样5个字符并将它们连接起来。 - Dannidrandom.sample()
从输入中返回一个唯一的值集,这与random.choice()
不同吗? - Droppyrandom.choice
和random.randint
都返回单个值。您还可以使用numpy.random.choice
来提供一个唯一的集合,如果您添加了replace=False,就像这样:numpy.random.choice(string.ascii_lowercase, size=5, replace=False)
。 - Dannid>>> import random
>>> import string
>>> random.choice(string.ascii_lowercase)
'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(rand_letters)
['o', 'l', 'p', 'f', 'v']
random.choices
的分布是什么? - Sal-laShelp(random.choices)
表示:如果没有指定相对权重或累积权重,则选择是等概率的。这意味着分布是离散均匀分布(https://en.wikipedia.org/wiki/Discrete_uniform_distribution)。 - Qaswed为了完整性另一种方法:
>>> chr(random.randrange(97, 97 + 26))
利用ASCII字母表中'a'的编码为97,以及字母表中有26个字母的事实。
在确定random.randrange()
函数调用的下限和上限时,请记住random.randrange()
对其上限是排除的,这意味着它只会生成比提供的值小1的整数。
chr(random.randrange(97, 97 + 26 - 1))
吗? - zhongxiao37chr(random.randrange(97, 97 + 26)
。random.randrange()
的上限是不包含的,这意味着为了获得字符范围 97-122
的所有字符,传递的参数必须是 123
。 - Kieran Moynihan97 + 26
了。 - zhongxiao37import random
list1=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
b=random.randint(0,7)
print(list1[b])
这并不使用任何花哨的模块,但能很好地工作:
''.join(chr(random.randrange(65,90)) for i in range(10))
def randchar(a, b):
return chr(random.randint(ord(a), ord(b)))
import random
def guess_letter():
return random.choice('abcdefghijklmnopqrstuvwxyz')
ascii_letters
和digits
后,再从random
中导入choice
函数):''.join([choice(ascii_letters + digits) for i in range(32)])
。 - Devin