#这是一个给学生加分的小程序。需要提前把学生序号、姓名输入到excel中,保存为py.xls
#每次可以输入多个同学姓名,自动在表格内加1分。
import xlrd
import xlwt
from xlutils.copy import copy # as cp
import time
workbook = xlrd.open_workbook(r'D:\py.xls')
copy = copy(workbook) #复制
#------------------------------------
c=1 #班级临时参数
while c>0:
ban = input ('请输入班级:')#python3 里 input() 默认接收到的是 str 类型。
if ban.isdigit(): # 判断输入内容是不是数字
ban = int(ban) #将b转换为一个整数
if ban == 3:
sheet1 = workbook.sheet_by_name('Sheet1')
sheet1cooy = copy.get_sheet(0)
break
elif ban == 4:
sheet1 = workbook.sheet_by_name('Sheet2')
sheet1cooy = copy.get_sheet(1) #选择班级,复制sheet2
break
else:
print('请重新输入班级:3或4')
continue
else:
print('请重新输入班级:3或4')
continue
#--------------------------------------------------
#print (sheet1.cell_value(a,1),sheet1.cell_value(4,1)) #可连续输出
row_count=sheet1.nrows #获取表格有效总行数
col_count= sheet1.ncols #获取表格有效总列数
m = [col_count for i in range(500)] #临时数组,用来统计那个学号加过几次分
print ('----------------------------')
b=1 #临时b
while b>0:
list2 = input('请输入学号,用空格分隔多个数据:')
#生成一个记录优秀学号的数组num
num = [n for n in list2.split()]
d=1 #临时d,提取输入的学号中的位置用
while d>0:
if d>len(num): #当i太长后退出
break
if num[d-1].isdigit(): # 判断输入内容是不是数字
num[d-1] = int(num[d-1])
# print(num[d-1])
for i in range(1,row_count): #i从1到最后一行行数遍历
cell0 = sheet1.cell_value(i,0) #获取第一列每一个数据
cell1 = sheet1.cell_value(i,1)
if num[d-1] == cell0: #如果输入的数字和第一列某个单元格的数字相同,则
print (cell1) #输出第二列中相应的姓名
m[num[d-1]]=m[num[d-1]]+1
print( m[num[d-1]])
sheet1cooy.write(i, m[num[d-1]]-1, 1)
#sheet1cooy.write(0, m[num[d-1]]-1, time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))
sheet1cooy.write(0, m[num[d-1]]-1, time.strftime('%m-%d',time.localtime(time.time())))
d=d+1
copy.save(r'D:\py.xls')
print ('数据已保存!')
break
生成exe文件:
需要pyinstaller
打开命令提示行,输入 pip install pyinstaller 等待安装成功。
进入代码所在目录
输入 d:
输入 D:\Program Files\Python37\my code
输入 pyinstaller -F test.py
上面的test.py即本脚本保存文件名。
注意:文件名不要为汉字。