简介
老师发布了马原题库后,排版简直令人发麻。
为了看着方便将excel表格编写成一个答题小程序,为了方便,没有用图形化编程,在cmd运行界面也可以看。
使用的python编写,写好后直接使用pyinstaller编译
界面
代码
import pandas as pd
import os
import random
import time
import ctypes
import sys
STD_INPUT_HANDLE = -10
STD_OUTPUT_HANDLE = -11
STD_ERROR_HANDLE = -12
# 字体颜色定义 text colors
FOREGROUND_BLUE = 0x09 # blue.
FOREGROUND_GREEN = 0x0a # green.
FOREGROUND_RED = 0x0c # red.
FOREGROUND_YELLOW = 0x0e # yellow.
# 背景颜色定义 background colors
BACKGROUND_YELLOW = 0xe0 # yellow.
# get handle
std_out_handle = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE)
def set_cmd_text_color(color, handle=std_out_handle):
Bool = ctypes.windll.kernel32.SetConsoleTextAttribute(handle, color)
return Bool
# reset white
def resetColor():
set_cmd_text_color(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE)
# green
def printGreen(mess):
set_cmd_text_color(FOREGROUND_GREEN)
sys.stdout.write(mess + '\n')
resetColor()
# red
def printRed(mess):
set_cmd_text_color(FOREGROUND_RED)
sys.stdout.write(mess + '\n')
resetColor()
# yellow
def printYellow(mess):
set_cmd_text_color(FOREGROUND_YELLOW)
sys.stdout.write(mess + '\n')
resetColor()
def single_choice(num = 10):
score = 0
one = 100/num
a = pd.read_excel(r"2020新修马克思主义基本原理概论单项选择题.xlsx")
b = [['作者:伊尔安拉 时间 2020/12/1'],
[],
[],
[],
[],
[],
[],]
# 将数据存入列表
for i in range(a.shape[0]):
for j in range(1,7):
b[j].append(a[j][i])
low = random.randint(0,a.shape[0]-num)
for i in range(low, low+num):
print(b[1][i])
for j in range(2,6):
print(chr(63 + j), b[j][i])
reply = input()
if reply == b[6][i]:
printGreen('yes')
score +=one
else:
printRed('No')
printYellow("==答案为:{}".format(b[6][i]))
return score
def multiple_choice(num = 10):
score = 0
one = 100 / num
a = pd.read_excel(r"多选.xlsx")
b = [['作者:伊尔安拉'],
[],
[],
[],
[],
[],
[], ]
# 将数据存入列表
for i in range(a.shape[0]):
for j in range(1, 7):
b[j].append(a[j][i])
low = random.randint(0, a.shape[0] - num)
for i in range(low, low + num):
print(b[1][i])
for j in range(2, 6):
print(chr(63 + j), b[j][i])
reply = input()
if reply == b[6][i]:
printGreen('yes')
score+=one
else:
printRed('No')
printYellow("==答案为:{}".format(b[6][i]))
return score
def judgement(num = 10):
score = 0
one = 100 / num
a = pd.read_excel(r"判断.xlsx")
b = [['作者:伊尔安拉'],
[],
[]]
# 将数据存入列表
for i in range(a.shape[0]):
for j in range(1, 3):
b[j].append(a[j][i])
low = random.randint(0, a.shape[0] - num)
for i in range(low, low + num):
print(b[1][i])
reply = input()
if (reply == 'A' and b[2][i]=='正确') or reply=='B' and b[2][i]=='错误':
printGreen('yes')
score+=one
else:
printRed('No')
printYellow("==答案为:{}".format(b[6][i]))
return score
def maxture():
a = single_choice(40)
b = multiple_choice(20)
c = judgement(20)
# 计算权重
return a*0.25 + b *0.5 + c*0.25
def __main__():
anwser = ' '
print('输入单次练习的习题数目(1-200)【只能输入1-200的整数】')
num = int(input())
while num<1 or num >200:
print('输入单次练习的习题数目(1-200)')
num = int(input())
while anwser != '0':
print('\n------------\n输入选择 [只能输入大写字母或0]'
'\n A:单选'
'\n B:多选'
'\n C:判断 [A为正确,B为错误]'
'\n D:混合 [共80道题,其中单:多:判=2:1:1]'
'\n 0:退出')
anwser = input()
T1 = time.time()
if anwser=='A':
score = single_choice(num)
printGreen('分数为 {}'.format(score))
elif anwser=='B':
score = multiple_choice(num)
printGreen('分数为 {}'.format(score))
elif anwser =='C':
score = judgement(num)
printGreen('分数为 {}'.format(score))
elif anwser =='D':
score = maxture()
printGreen('分数为 {}'.format(score))
elif anwser=='0':
printGreen('感谢使用')
break
else:
printRed("输入错误")
T2 = time.time()
print('时间:%s 秒' % ((T2 - T1)))
__main__()
资源
文件我已经编译好,在下面的链接
编译好的文件