【Python标准库】random,string

1.random是做什么的?

        生成随机数,随机取值

2.random的方法
  • randint(a,b)
    • 返回[a,b]之间的一个整数
前提:import random

例1: 生成20位字符串,由字母,数字组成且字母数字各至少1位,字母,数字的位数如何随机生成?

numer1 = random.randint(1, 19)
letter1 = 20-numer1
print(f"数字是{numer1}位,字母是{letter1}位")

  • choice(x)
    • x可以是有序序列,随机返回一个元素
    • 一般和string模块搭配使用

import random


例1:
r = random.choice([1,2,3,4])

print(r)

  •  sample(seq,k)
    • 不打乱顺序的情况下,随机抽取指定数量的元素,返回列表
import random

例1:从0-99抽取10个元素

numer1 = random.sample(range(100), 10)

print(numer1)
  • shuffle(seq)
    • 打乱序列的顺序,无返回值
    • list1 = [1, 2, 3, 4, 5, 6]
      
      random.shuffle(list1)
      
      print(list1)  # 比如[3, 5, 6, 2, 1, 4]
  • randrange((first,end,step)
    • 在指定范围内,返回一个指定步长的随机数
    • 左闭右开
import random

例1: 在100-1000范围内随机生成3个能被5整除的数

r = [random.randrange(100, 1000, 5) for _ in range(3)]

print(r)  # 返回能被5整除的数


例2:随机生成5个十位数字

r = [random.randrange(10,99) for _ in range(5)]

print(r)  
  • random()
    • 返回0.0-1.0之间的一个浮点数
  • uniform(a,b)
    • 返回[a,b]之间的一个浮点数
3.​string的方法
  • string.ascii_letters
    • 随机返回a-zA-z之间的1个字母
  • string.ascii_uppercase
    • 随机返回A-Z之间的1个大写字母
  • string.ascii_lowercase
    • 随机返回A-Z之间的1个小写字母
  • string.digits
    • 随机返回0-9之间的1个数字
  • string.whitespace
    • 随机返回空白字符或者转义字符等
  • string.punctuation
    • 随机返回特殊字符,比如#,$,%
  • string.printable
    • 随机返回以上属性的任意一个
4. 综合应用场景
        1. 生成是大小写字母的6位验证码
例1:
结合string模块的字母属性和join方法进行合并

upp_str = ''.join([random.choice(string.ascii_letters) for _ in range(6)])
print(upp_str) # 比如hVFNue
2. 生成包含字母+数字的6位验证码
# 根据题目要求,字母,数字需至少一位,故数字至少1位,至多5位
number1 = random.randint(1, 5)

# 根据数字个数,求字母个数
letter1 = 6-number1

# choice结合string的字母属性生成字母列表
letter_str = [random.choice(string.ascii_letters) for _ in range(letter1)]

# choice结合string的字母属性生成数字列表
number_str = [random.choice(string.digits) for _ in range(number1)]

# 对字母和数字列表合并
r = letter_str+number_str

# 打乱字母数字的顺序

random.shuffle(r)


# 列表内的元素拼接
print(''.join(r)) # 比如:X45K8K

你可能感兴趣的:(Python,python,开发语言)