htyj0 发表于 2021-3-29 21:18:12

按一定规则生成随机字符串

本帖最后由 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


这样倒是可以实现,但感觉挺笨的。

请教各位大神有没有更简单的写法。
谢谢!!

wp231957 发表于 2021-3-29 21:21:24

有,查一下百度,好像有个simple就可以直接指定长度

不能懒 发表于 2021-3-29 21:39:43

import random

string = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
for i in range(6):
rst =string
print(rst,end="")

枕思谦 发表于 2021-3-29 21:53:21

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 21:56:57

本帖最后由 htyj0 于 2021-3-29 22:04 编辑

多谢楼上二位。
综合一下,下面的代码貌似更简洁一些:

import random
string = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
rand_string =''.join(random.sample(list(string), 6))   

hrp 发表于 2021-3-29 22:04:37

本帖最后由 hrp 于 2021-3-29 22:08 编辑

import random

# 以下一行还不如直接写0-z
chars =

print(''.join(random.sample(chars, 6)))

htyj0 发表于 2021-3-29 22:12:57

hrp 发表于 2021-3-29 22:04


谢谢。不好意思,再请教一下range()前面加个*号是什么意思

hrp 发表于 2021-3-29 22:20:03

htyj0 发表于 2021-3-29 22:12
谢谢。不好意思,再请教一下range()前面加个*号是什么意思

解包,就是把range解开,让其中的数字填充到外层范围的意思,比如a = [*range(3), *range(4, 6)],就是a =

htyj0 发表于 2021-3-29 22:41:56

明白了。谢谢
页: [1]
查看完整版本: 按一定规则生成随机字符串