按一定规则生成随机字符串
本帖最后由 htyj0 于 2021-3-29 21:20 编辑生成规则要求:在“0-9”、“a-z”、“A-Z”这62个字符中随机组合成一个长度为6的字符串。
我的代码是这样的:
import random
def generate_string(len= 6):
i = 0
s = ''
while i < len :
d =
c = chr(random.choice(random.choice(d)))
s += c
i += 1
return s
这样倒是可以实现,但感觉挺笨的。
请教各位大神有没有更简单的写法。
谢谢!!
有,查一下百度,好像有个simple就可以直接指定长度 import random
string = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
for i in range(6):
rst =string
print(rst,end="") import random
captcha="{}{}{}{}{}{}".format(chr(random.randint(97,122)),random.randint(0,9),chr(random.randint(65,90)),chr(random.randint(97,122)),random.randint(0,9),chr(random.randint(65,90)))
print(captcha)
本帖最后由 htyj0 于 2021-3-29 22:04 编辑
多谢楼上二位。
综合一下,下面的代码貌似更简洁一些:
import random
string = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
rand_string =''.join(random.sample(list(string), 6))
本帖最后由 hrp 于 2021-3-29 22:08 编辑
import random
# 以下一行还不如直接写0-z
chars =
print(''.join(random.sample(chars, 6))) hrp 发表于 2021-3-29 22:04
谢谢。不好意思,再请教一下range()前面加个*号是什么意思 htyj0 发表于 2021-3-29 22:12
谢谢。不好意思,再请教一下range()前面加个*号是什么意思
解包,就是把range解开,让其中的数字填充到外层范围的意思,比如a = [*range(3), *range(4, 6)],就是a = 明白了。谢谢
页:
[1]