背景需求:
孩子们写了带有自己学号(名字)的纸条,折起来做成抽奖卡片,放在白色抽屉盒里,有时候我会让某一天(4月14日就选14号同学)抽纸条,抽到的学号,这位孩子就可能得到一个折纸玩具
但是因为抽奖的随机性,出现了1位孩子连续2天得到了两个礼物的情况,没有拿到折纸玩具的孩子嚷得我头疼。
人工随机抽奖会出现重复,无法保证公平(每个孩子都有),所以我就想利用编程做一个抽奖
代码展示:
这是我自己写的,没有参考网络代码。感觉自己的Python能力有点增强了
'''
名称:28人不重复抽签(学号)
说明:运行一次,随后都是按回车(便于幼儿操作)
作者:阿夏
时间:2023年4月15日 21:00
'''
import random
import time
# 输出学号的列表1-28号
num=[]
for i in range(1,29):
print(i)
num.append(i)
print(num)
# 不重复抽取学号,然后按照这个顺序抽签,确保不会遗漏,多抽
a=random.sample(num,len(num))
print(a)
for x in range(len(a)):
print('----------------------------\n')
b=input('请抽签,输入回车Enter\n')
if b=='': # 按回车 出现一个学号
print('第{}幸运儿:\n\n{}号\n'.format(x+1,a[x]))
print('----------------------------\n')
time.sleep(5)
代码很简单哦
抽的学号完全与列表顺序相同。
不足之处:
只能运行一次,然后一次28人全部被抽到,才可以算公平——可以用在发28人都有的物品上(六一节礼物等)
因为第二次运行,抽签顺序的列表又会改变。
如何从列表里踢出被抽过的号码,每天运行都保留结果,抽到最后一个学号后,重新恢复原有列表