资源简介
一款读取学生课表数据并生成其无课表的xls的小工具.
由于本人要遇到要制作很多人的无课表的问题,在学习了python后,就借助其弄了这款工具.
使用者只需要保证数据规范,就能快速制作出一个社团的无课表!
代码片段和文件信息
import sys
#
# 调戏与被调戏
#
print(“注意了!无课表助手不具备排错功能!\n就是说你的‘课表.txt‘必须严格规范格式!“)
print(“\n如有疑问请向Adj寻求帮助!\n“)
t = 0
info = 0
while info > 1 or info < 0:
t = t+1
info = int( input(‘详细操作提示for 1 简略操作提示for 0 请选择: ‘) )
if info > 1 or info < 0:
print(‘你还真当我不能排错啊!好好输入 1 或者 0 就这么难么?\n‘)
if info == 1:
print(‘显示详细操作提示!\n‘)
if t > 5:
print(‘慢着!你你你刚才是不是调戏我来着!?\n我数数123..你丫的调戏老子‘t‘次了!\n‘)
else:
print(‘显示简略操作提示!\n‘)
if t > 5:
print(‘慢着!你你你刚才是不是调戏我来着!?\n我数数123..你丫的调戏老子‘t‘次了!\n‘)
#
# 读取课表
#
n = 1 #人数
sub_1 = []
sub_2 = []
try:
with open(‘课表.txt‘‘r‘) as kb:
filename = kb.readline().strip() #读取要保存的文件名
p=1 # p为判断下一人的标准读一行加一次当p++后若p==12就开始下一人的处理
for i in kb: # 一行一行地读取课表的内容
i = i.strip() # 去空格 换行
if p == 1 : # 读取单周名字行
name_1 = i.split(“ “)[0]
stu = [ name_1 ]
if info == 1:
print(‘开始读取‘stu[0]‘的数据!‘)
else:
if info == 1:
print(‘### 读取‘stu[0]‘星期‘p-1‘的课表‘)
stu = stu+[i.split(‘ ‘)]
p=p+1
#单周
if p == 7:
print(stu[0]‘单周的无课表读取完毕!‘)
sub_1 = sub_1+stu
i = kb.readline() # 单周数据读取完毕后读取双周名字行
name_2 = i.split(“ “)[0]
stu = [name_2]
if name_1 != name_2:
print(“ 警告!\n在读取第“ n ‘个人的数据时单双周的名字不同!‘)
print(“单周: {} 双周: {}\n“.format(name_1 name_2))
sys.exit()
if p == 12: # 开始新数据的读取
sub_2 = sub_2 + stu
n = n + 1
p = 1 # 恢复p=1使下一次循环正常运行
print(stu[0] ‘双周的无课表读取完毕!\n‘)
continue
print(‘已成功读取‘n-1‘人的数据!\n‘)
except:
print(‘ 警告!\n课表.txt 不在当前目录!\n或者课表.txt的内容格式不正确!‘)
sys.exit()
if info == 1:
print(‘单周: ‘ sub_1)
print(‘双周: ‘ sub_2)
#记录总人数
total=n-1
#
# 制作无课表的列表
#
work_1 = [ [ ‘ ‘‘ ‘‘ ‘‘ ‘‘ ‘‘ ‘‘ ‘ ] [ ‘ ‘‘ ‘‘ ‘‘ ‘‘ ‘‘ ‘‘ ‘ ] [ ‘ ‘‘ ‘‘ ‘‘ ‘‘ ‘‘ ‘‘ ‘ ] [ ‘ ‘‘ ‘‘ ‘‘ ‘‘ ‘‘ ‘‘ ‘ ] [ ‘ ‘‘ ‘‘ ‘‘ ‘‘ ‘‘ ‘‘ ‘ ] ]
work_2 = [ [ ‘ ‘‘ ‘‘ ‘‘ ‘‘ ‘‘ ‘‘ ‘ ] [ ‘ ‘‘ ‘‘ ‘‘ ‘‘ ‘‘ ‘‘ ‘ ] [ ‘ ‘‘ ‘‘ ‘‘ ‘‘ ‘‘ ‘‘ ‘ ] [ ‘ ‘‘ ‘‘ ‘‘ ‘‘ ‘‘ ‘‘ ‘ ] [ ‘ ‘‘ ‘‘ ‘‘ ‘‘ ‘‘ ‘‘ ‘ ] ]
# [ [星期一] [星期二] [星期三] [星期四] [星期五] ]
# [星期x] = [ [第一部分] [第二部分] [第三部分] [第四部分] [第五部分] [第六部分] [第七部分] ]
for w in range(1 5+1): #星期x
# 有多少人就循环多少次 列表总长度:人数*6
for z in range(0 total*6 6):
# sub[z]是某人的名字
# sub[z+w]是某人星期w的数据
# 读取星期w的数据
for part in range(17+1): # 每天7部分part代表第几部分
#处理单周
if sub_1[z+w][part] == ‘0‘: # 如果无课(0)就在对应的位置加上他的名字
if work_1[w-1][part - 1] == ‘ ‘
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1020949 2017-03-29 11:27 无课表助手\无课表助手说明书.docx
文件 246 2017-03-29 11:27 无课表助手\课表.txt
文件 11758 2017-03-29 11:28 无课表助手\闲时作品 无课表 4.0.py
目录 0 2017-03-29 11:28 无课表助手
----------- --------- ---------- ----- ----
1032953 4
评论
共有 条评论