Python随机抽查部分学生,手把手教你学会random

liftword3个月前 (02-05)技术文章54

疫情期间的网课上

你有被熊孩子气到炸吗

网线的两端,是不是这样巧合呢

复课后的课堂上

你有被熊孩子气到疯吗

等下,跑题了,下面言归正传

关键知识点:random库、判断、循环、列表、异常处理、文件的读取等。

开发环境:Python 3.7(32位)、PyCharm 2020.1、Win 10(64位)。

测试环境:打包文件在Win 7(32位&64位)、Win 10(32位&64位)下测试正常运行。

1.场景概述

假如你是一名老师,平时是否有一种痛叫选择学生困难症?

随机抽查部分同学的周末作业

随机抽查部分学生的课文背诵情况

下课后随机抽查部分学生的当堂练习等等。不管你是教数学的体育老师、还是教语文的英语老师,平日都会频繁地提问学生、抽查学生

为了治愈选择困难症,为了去人为因素,公平、随机地抽取学生,一款“随机选”神器应运而生。用上后,保证你腰不酸了、背不痛了、腿也不抽筋了

2.需求分析

1.从固定姓名(数)的文件中,随机抽取任意数量的姓名,打印到屏幕。

2.继续从剩下的姓名中随机抽取任意数量的姓名,并打印到屏幕。

3.当所有姓名被选完后,姓名名单恢复初始值。

4.进入新一轮随机选状态。

3.实现步骤

首先,将所有的(学生)姓名进行保存(用记事本是为了文件的强兼容性、体量也小)。

按照每行一个姓名的格式,方便后续读取。

然后,导入random库。

Bash
import random

接着,将文件中的姓名进行读取、放入列表中。

Bash
names = []  # 创建空列表
with open('names.txt', 'r') as f:
    '''对文件中的姓名进行读取并放入空列表中'''
    for i in f.readlines():
        names.append(i[:-1])  # 记事本文件中,每行姓名后面隐藏着一个回车符,用这个切片方式,可以去掉
random_names = names.copy()  # 用列表的copy方法,对存放原始数据的列表names进行深拷贝,赋值给临时列表random_names,防止原始数据丢失

最后,下面的核心代码逻辑用来实现选取任意数量的姓名,打印到屏幕。当所有姓名被选完后,姓名名单恢复初始值,进入新一轮随机选状态。

Bash
num = 0  # 打印到屏幕的每个姓名前面的序号,初始化为0
while True:
    '''实现选取任意数量的姓名(数),打印到屏幕。当所有姓名被选完后,姓名名单恢复初始值,进入新一轮随机选状态。'''
    try:
        '''为避免在输入姓名数量的时候可能会输入非数字值,这里用异常处理语句处理'''
        if len(random_names) == 0:
            '''当所有姓名被选完后,初始化各项数值,进入新一轮随机选状态。'''
            print('\n' + '+' * 100 + '\n上一轮随机抽取已经结束,下一轮开始了:\n' + '+' * 100 + '\n')
            num = 0
            random_names = names.copy()

        random_number = int(input('请从' + str(len(random_names)) + '人中输入要随机抽取的数量:'))
        if random_number > len(random_names):
            '''当输入的姓名数值大于存量数值时,跳到下轮循环'''
            continue

        print('-' * 100)
        for i in range(random_number):
            '''选取指定数量的姓名,打印到屏幕'''
            index = random.randint(0, len(random_names) - 1)
            num += 1
            print(num, random_names[index])
            del random_names[index]  # 上面被随机选中的姓名打印完后即从列表中删除,防止干扰下次随机选取
        print('-' * 100)

    except ValueError:
        pass

4.完整代码

5.写在后面

假如你是一名老师,是否get到这个技巧了呢?其实,这个程序除了可以随机抽取任意数量的学生姓名外,也适用于任何随机筛选内容的场景。聪明如你,快发挥强大的发散思维能力,动手试一试吧。

相关文章

Python随机模块22个函数详解_python 随机ua

随机数可以用于数学,游戏,安全等领域中,还经常被嵌入到算法中,用以提高算法效率,并提高程序的安全性。平时数据分析各种分布的数据构造也会用到。random模块,用于生成伪随机数,之所以称之为伪随机数,是...

掌握Python中choice函数的用法:随机选择与random模块

知识星球:写代码那些事如果你有收获|欢迎|点赞|关注|转发这里会定期更新|大厂的开发|架构|方案设计这里也会更新|如何摸鱼|抓虾Python教程:Python中choice函数用法欢迎来到写代码那些事...

Python生成随机数_python生成随机数并判断奇偶

生成一个Python随机数 6 分钟阅读Python有一个内置的随机模块来实现此目的。它公开了几个方法,如randrange(),randint(),random(),seed(),uniform()...

Python实现随机&批量梯度下降算法

一.概述梯度下降属于迭代法的一种,可以用于求解最小二乘问题。在求解机器学习算法的模型参数时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法。在求解损失函...

玩转 Python 中的随机数_python编程随机数

开发中我们经常遇到需要随机数的场景,比如为了用户密码更安全我们有时会加盐,也就是将用户原密码连接上一串随机字符然后加密保存,又比如我们可能需要随机展示某张图片等等。今天,我们就来理一理 Python...