Python——第五章:随机模块random

1、浮点数random.random()

的返回值是在 [0, 1)(左闭右开区间)内的随机浮点数。这意味着它可以取到 0,但不包括 1。所以,random.random() 可以返回 0,但不能返回 1。

import random
print(random.random())        # [0, 1)
print(random.random())
print(random.random())
print(random.random())

#运行结果
0.972903402223027
0.37113786347410194
0.4911954551770671
0

2、随机小数random.uniform(a, b)

random 模块中的一个函数,用于生成指定范围 [a, b] 内的随机浮点数。在下面例子中,random.uniform(5, 9) 会生成一个介于 [5, 9) (左闭右开区间:包括 5 但不包括 9)的随机浮点数。

import random
print(random.uniform(5, 9))     #[5, 9) 
print(random.uniform(5, 9))

#运行结果
6.919123231219793
5

3、随机整数random.randint(a, b)

用于生成指定范围 [a, b] 内的随机整数。在下面例子中,random.randint(3, 8) 会生成一个介于[3, 8](全闭区间:包括 3 和 8)的随机整数。

import random
print(random.randint(3, 8))        #[3, 8]
print(random.randint(3, 8))

#运行结果
8
5

4、随机选择一个元素并返回random.choice(seq)

seq: 非空序列,可以是列表、元组、字符串等。用于从非空序列 seq 中随机选择一个元素并返回。

import random

lst = [1, 2, 3, 4, 5]
print(random.choice(lst))

#运行结果
3

5、随机返回多个元素并返回random.sample(seq, k)

seq: 非空序列,可以是列表、元组、字符串等。用于从非空序列 seq 中随机选择k个元素并返回。顺序是随机的。

lst = [1, 2, 3, 4, 5]
print(random.sample(lst, 3))    #k=3,选择返回3个

#运行结果
[4, 3, 5]

6、练习题:

1、随机生成四位验证码

chr(): 这是一个内置函数,用于将 ASCII 码值转换为对应的字符。在这里,chr() 函数接收生成的随机整数作为参数,然后返回对应的大写、小写字母字符。

str(): 这是一个内置函数,用于将数字、字符等数据类型转换为字符串。

def rand_upper():
    return chr(random.randint(65, 90))    #ASCII 码中65-90的数字代表大写字母

def rand_lower():
    return chr(random.randint(97, 122))    #ASCII 码中97-122的数字代表小写字母

def rand_num():
    return str(random.randint(0, 9))    #str能够得到一个随机的数字字符的字符串,而不会涉及到 ASCII 码的转换。

def ran_verify_code(n = 4):
    lst = []
    for i in range(n):
        count =random.randint(1, 3)
        if count == 1:
            s = rand_upper()
        elif count == 2:
            s = rand_lower()
        elif count == 3:
            s = rand_num()
        lst.append(s)
    return ''.join(lst)        #lst包含了生成的随机字符的列表,通过 join 方法将它们连接成为一个字符串,而不是4个独立的元素列表

code = ran_verify_code()
print("生成的验证码:", code)

.join()用法Python——第二章:替换和切割

还可以用string函数,调用大写字母、小写字母、数字

import random
import string

def rand_upper():
    return random.choice(string.ascii_uppercase)

def rand_lower():
    return random.choice(string.ascii_lowercase)

def rand_num()
    return random.choice(string.digits)

***忽略大小写进行判断:Python——第二章:字符串操作——大小写转换

 

2、年会抽奖

写一个年会抽奖小程序,奖项如下:

一等奖1名,泰国5日游

二等奖2名,iphone手机一部

三等奖3名,运动手环

规则

1.一共抽3次,第一次抽3等奖,第二次抽2等奖,第三次压轴抽1等奖.

2.每个员工限中奖1次,不能重复.

import random
import time

lst = ['赵敏', '张绍刚', '张无忌', '武则天', '嬴政', '马超', '赵云', '诸葛亮']
temp = []
temp.extend(random.sample(lst, 3))
print("三等奖获得者", temp)

for item in temp:
    lst.remove(item)

time.sleep(10)
temp = []
temp.extend(random.sample(lst, 2))
print("二等奖获得者", temp)

for item in temp:
    lst.remove(item)

time.sleep(10)
temp = []
temp.extend(random.sample(lst, 1))
print("一等奖获得者", temp)
for item in temp:
    lst.remove(item)

time.sleep(10)
print("没获奖名单", lst)

用函数的方式调用,进行抽奖。加深了解形参、实参的概念。

import random
import time

lst = ['赵敏', '张绍刚', '张无忌', '武则天', '嬴政', '马超', '赵云', '诸葛亮']

def running(mingdan, jiangxiang, renshu, count=3):
    temp = []
    print(f"按回车键进行{jiangxiang}等奖抽奖")
    input("\n")
    temp.extend(random.sample(mingdan, renshu))

    for item in temp:
        mingdan.remove(item)
    
    print(f"{jiangxiang}等奖获得者:", temp)
    time.sleep(count)

# 第一轮抽3等奖,3名
running(lst, 3, 3)
# 第二轮抽2等奖,2名
running(lst, 2, 2)
# 第三轮抽1等奖,1名
running(lst, 1, 1)
# 输出未中奖名单
print("没获奖人名单:", lst)

 

posted @ 2023-12-11 17:37  Magiclala  阅读(180)  评论(0编辑  收藏  举报