Python随机抽查,手把手教你探索random魔法

博主:ifeinaifeina 09-07 35

疫情期间的网课上

你有被熊孩子气到炸吗

Python随机抽查,手把手教你探索random魔法

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

Python随机抽查,手把手教你探索random魔法

复课后的课堂上

你有被熊孩子气到疯吗

Python随机抽查,手把手教你探索random魔法

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

关键知识点: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.实现步骤

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

Python随机抽查,手把手教你探索random魔法

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

然后,导入random库。

import random

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

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,防止原始数据丢失

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

num = 0  # 打印到屏幕的每个姓名前面的序号,初始化为0while 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.完整代码

Python随机抽查,手把手教你探索random魔法

5.写在后面

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

The End

本站内容搜集自互联网,版权归原作者所有。如有侵权,请来信告知,我们将删除相关内容。