您现在的位置是:首页 >技术杂谈 >带UI的python单项选择题评分系统网站首页技术杂谈
带UI的python单项选择题评分系统
在《EXCEL制作选择题试卷,Python快速汇总成绩》的基础上,借助强大的人工智能,快速的完成了一个带UI的单项选择题评分系统。
略谈人工智能
若想精通Python每一个库,顺手拈来海阔天空的写代码,过于理想主义。而人工智能,的确是个强大的工具。提出问题,即可得到相关代码并带有解析说明。运用现有的专业知识验证一翻,不但解决问题还能丰富已有的知识库,学到新的方法,甚至于打开新思路。
用了AI国内一个镜像网站,第一次用微信登录后,IP地址被网站捕获,微信收到一大堆看一看的推送,不胜其烦,用了一个下午才消除这些推送。巧的是,三天后,包头AI视频诈骗登上热搜,人工智能的用户安全心理建设大打折扣。后来,没有登录的情况下,每天三次的提问。
单项选择题评分系统
源文件:MultipleChoice.py
代码:
import tkinter as tk
from tkinter import ttk, filedialog
from openpyxl import Workbook
import openpyxl
import os
class Application(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.master.title("单选题评分系统")
self.create_widgets()
def create_widgets(self):
# 第一行
folder_label = ttk.Label(self.master, text="试卷文件夹")
folder_label.grid(row=0, column=0, padx=5, pady=5)
self.folder_entry = ttk.Entry(self.master, width = 60)
self.folder_entry.grid(row=0, column=1, padx=5, pady=5)
browse_button = ttk.Button(self.master, text="浏览...", command=self.browse_folder)
browse_button.grid(row=0, column=2, padx=5, pady=5)
# 第二行
answer_label = ttk.Label(self.master, text="标答")
answer_label.grid(row=1, column=0, padx=5, pady=5)
self.answer_entry = ttk.Entry(self.master, width = 60)
self.answer_entry.grid(row=1, column=1, padx=5, pady=5)
button_score = ttk.Button(self.master, text="评分", command=self.calculate_score)
button_score.grid(row=1, column=2, padx=5, pady=5)
# 第三行
file_label = ttk.Label(self.master, text="成绩文件")
file_label.grid(row=2, column=0, padx=5, pady=5)
self.file_entry = ttk.Entry(self.master, width=60)
self.file_entry.grid(row=2, column=1, padx=5, pady=5)
button_score = ttk.Button(self.master, text="打开", command=self.open_file)
button_score.grid(row=2, column=2, padx=5, pady=5)
def browse_folder(self):
folder_path = filedialog.askdirectory()
if folder_path:
self.folder_entry.delete(0, tk.END)
self.folder_entry.insert(0, folder_path)
def calculate_score(self):
path = self.folder_entry.get()
answer = self.answer_entry.get()
if not answer:
return
score_list = []
#遍历电子表格文件
for filename in os.listdir(path):
row_values = []
if filename.endswith(".xlsx"):
file_path = os.path.join(path, filename)
testbook = openpyxl.load_workbook(file_path)
testsheet = testbook.active
#提取活动工作表A2:C2的值
for row in testsheet["A2:C2"]:
for cell in row:
row_values.append(cell.value)
#提取活动工作表C6至C列最大行号的值
row_start = 6
row_end = testsheet.max_row
#读取指定范围内的单元格的值
stu_answer = []
for row_num in range(row_start, row_end, 5):
cell_reference = 'C' + str(row_num)
cell_value = testsheet[cell_reference].value
stu_answer.append(cell_value)
#计算分数
score = 0
for k in range(0,len(answer)):
if answer.upper()[k] == stu_answer[k] or answer.lower()[k] == stu_answer[k]:
score += 1
score= score * 100 / len(answer)
row_values.append(score)
testbook.close()
score_list.append(row_values)
# 生成分数文件
score_path = os.path.join(path, "score.xlsx")
scorebook = openpyxl.Workbook()
scoresheet = scorebook.active
for row in score_list:
scoresheet.append(row)
scorebook.save(score_path)
if scorebook:
self.file_entry.delete(0, tk.END)
self.file_entry.insert(0, score_path)
def open_file(self):
file_path = self.file_entry.get()
os.startfile(file_path)
# 创建应用程序对象并启动主循环
root = tk.Tk()
app = Application(master = root)
app.mainloop()
生成可执行文件
Pyintsller的官方网站: PyInstaller Manual — PyInstaller 5.11.0 documentation
1、确保已经安装了pyinstaller。如果没有,在命令提示符窗口安装。
安装命令:pip install pyinstaller
2、在命令行中进入要打包的python程序所在的目录。
3、输入命令生成一个没有控制台窗口的可执行文件。
pyinstaller --onefile --noconsole MultipleChoice.py
几个常用的Pyinstaller命令及其说明。
1、pyinstaller <filename>: 使用默认选项将指定的 Python文件打包成可执行文件。生成的可执行文件将位于dist目录下。
2、pyinstaller --name=<name> <filename>: 指定生成的可执行文件的名称。
3、pyinstaller --onefile <filename>:生成单个可执行文件,而不是一个包含多个文件的文件夹。
4、pyinstaller --noconsole <filename>: 生成一个没有控制台窗口的可执行文件。
5、pyinstaller --hidden-import=<module> <filename>: 指定需要导入但未被检测到的模块。该选项可用于处理由于模块导入顺序问题而导致的ImportError。
这些命令只是PyInstaller提供的众多选项之一。更多选项可以在PyInstaller的官方文档中找到。
运行程序
1、程序界面
2、单击浏览窗口打开试卷所在的文件夹。
3、输入标答
注意:标答时可键盘输入,也可从其他文件拷贝粘贴,大小写通配。
4、单击评分,完成评分并将评分生成的文件路径和名称显示在成绩文件Label。
注意:单击评分后,若试卷文件多,程序运行慢,在窗口标题显示“未响应”,不急,等待一会儿即可。
5、单击打开按钮打开生成的评分文件。