上学最恐怖的事在于上课前点名签到,尤其这个签到脚本更恐怖。
Posted Python是世界上最好的语言
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了上学最恐怖的事在于上课前点名签到,尤其这个签到脚本更恐怖。相关的知识,希望对你有一定的参考价值。
前言
开学已经有一段时间了,大学生活不能缺席的莫过于上!课!签!到!
随着科技的发展老师和学生思维的改变,二维码签到、手势签到、位置签到
……
我们总能看见一些,常规or非常规。传统or新潮的点名方式———
常规性的我们已经体验过了:纸飞机到底飞哪里、交手机签到、点名答到、随机抽查......
记得第一天上Python课堂的时候,老师就给我们做了一个随机签到以及随机点名回答问题的小程
序,第一次体验的时候还怪——刺激的😂😂!
时隔多年,就圆梦一波,当年没做成的小程序,今天来给大家做一做,就挺简单,给很多刚刚学
习的小伙伴儿练练手吧!话不多说,我们开始👇👇👇👇👇👇
一、《随机提问点名小程序》
1)本文是基于Tkinter写的一个界面化小程序:
Pyttsx3 文字转语音库使用。(有声音提示点名不需要老师自己在喊了哦~)
openpyxl模块是一个读写Excel 2010文档的Python库,如果要处理更早格式的Excel文档,需要用
到额外的库,openpyxl是一个比较综合的工具,能够同时读取和修改Excel文档。其他很多的与
Excel相关的项目基本只支持读或者写Excel一种功能。(这是存放学生名字用到的模块)
2)环境安装
本文需要的环境如下👇
Python、Pycharm 安装包:我用的是3.7的Python跟2019年的社区版Pycharm,这个可以看大家的
基本上都是可以用的,代码兼容都可以运行的。
pyttsx3、openpyxl、tkinter以及部分自带模块。
环境安装不会的可以找我拿安装包跟安装的视频、相应的Pycharm专业版的永久激活码这边也是有
的但是有版本限制有的不能激活的哈。
第三方库的安装通常是:
pip install +模块名
或者是感觉安装速度太慢可以添加镜像源文件的,这边我通常用的是豆瓣的镜像源:
pip install -i https://pypi.douban.com/simple/ +模块名
二、效果展示
三、代码演示
#!/usr/bin/env python
# coding:gbk
import pyttsx3
import openpyxl
import random
import tkinter as tk
import tkinter.messagebox
#### 利用python第三方库pyttsx3来将文字用语音发送出来
def voice(a):
## pytttsx初始化
engine = pyttsx3.init()
## a代表着需要转成音频的文字
engine.say(a)
# 注意,没有本句话是没有声音的
engine.runAndWait()
### 创建一个list来保存已经被抽到名字的同学
ed_name= []
root = tk.Tk() # 创建窗口对象
root.title("花名册 -----点名辅助程序 v1.10 ")
root.geometry("500x300")
# 创建抽取到的同学姓名展示部分
labelx=tk.Label(root,text="紫薇",fg="red",font=("宋体",80),width=9,height=2)
labelx.grid(row=0)
name_data = [] # 创建存储所有学生姓名的列表
def execl(filename, sheetname):
wb = openpyxl.load_workbook(filename) # 打开Excel
sheet = wb[sheetname] # 定位表单
# 创建一个空列表
column = 1
for row in range(2, sheet.max_row + 1):
if sheet.cell(row, column).value == "":
continue
name_data.append(sheet.cell(row, column).value) # 将第一列的每一行数值遍历添加到name_data列表中;
return name_data
execl("config\\\\name.xlsx","Sheet1") # 调用一下execl函数,在没有开始点名之前先将姓名添加到name_data列表之中
def ceshi():
while 2>1:
a = random.randint(0,len(name_data)-1)## 产生随机数,作为list的下标index
b = "下面请"+name_data[a]+"同学来回答问题"## 拼接成字符串
## 判断ed_name元素个数是不是与name_data列表中相同,如果相同,那么代表着所有的同学名字都被抽点过了
if len(ed_name) == len(name_data):
tk.messagebox.askokcancel("提示", '所有的学生都已经抽取了一边,如需要继续,请关闭该程序重新打开')
break
## 判断被抽点到的同学是不是已经被抽点过,如果被抽点过,则跳过该同学
if name_data[a] in ed_name:
continue
ed_name.append(name_data[a]) # 将被抽点到的学生添加到ed_name例表中,标记已经被抽点
labelx = tk.Label(root, text=name_data[a], fg="red", font=("宋体", 80), width=9, height=2)# 在姓名框里面展示姓名
labelx.grid(row=0)
voice(b) ## 语音读取
break
tk.Button(root, text="开始点名", width=15, command=ceshi).grid(row=1,padx=10, pady=10,sticky='s') # s南边也就是下边
root.mainloop() # 进入消息循环
小结
我想很多时候:大家都喜欢老师不点名到你身上,BUT根据我的经验来说:你越不想被点名,老师
越能找出100种办法,花式点你的名!所以,与其想方设法逃避点名,不如老老实实走进教室
按时签到,上课认真听讲,努力学习!嘿嘿~ 完整的项目素材源码滴滴我!
以上是关于上学最恐怖的事在于上课前点名签到,尤其这个签到脚本更恐怖。的主要内容,如果未能解决你的问题,请参考以下文章