random函数用法(手把手教你学会random)

精英怪
广告

疫情期间的网课上

random函数用法(手把手教你学会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.实现步骤

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

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

然后,导入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 # 打印到屏幕的每个姓名前面的序号,初始化为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到这个技巧了呢?其实,这个程序除了可以随机抽取任意数量的学生姓名外,也适用于任何随机筛选内容的场景。聪明如你,快发挥强大的发散思维能力,动手试一试吧。

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
评论列表 (暂无评论,240人围观)

还没有评论,来说两句吧...