新高考十二种选科情况下,再选科目的考室安排的探索2.0版
上一篇没有解决的几个问题和思考不全面的问题先总览一下:
1、一个总是报警的问题
2、一个总是有一行多的问题
3、没有把四科的安排合成一个表的问题
4、分离学生选的A科和非选A科的效率问题
import pandas as pd ##excel处理的模块
import random ##随机模块
import numpy as np ##数组处理模块
# 这两个参数的默认设置都是False 中文行列名的对齐必备
pd.set_option('display.unicode.ambiguous_as_wide', True)
pd.set_option('display.unicode.east_asian_width', True)
#最大显××行,××列
pd.set_option('display.max_rows', 925)
pd.set_option('display.max_columns',6)
#这里写 学生总体信息文件,本年级为 F:\操作区\考试学生座位安排\姓名-行政班级归属-教学班-采用志愿.xlsx
path1 = 'F:\操作区\考试学生座位安排\姓名-行政班级归属-教学班-采用志愿.xlsx' #绝对路径
# 这个excel文件 必须要有的一些 列 :姓名 行政班归属 教学班 采用志愿 ps:后期加入 在籍 日语 音美书 体育
path3 = r'F:\操作区\考试学生座位安排\考场容量表.xlsx'
# 这个excel文件 必须要有的列: 容量
####上面为必要的 库 和中文显示设置
def get_df(path1):
path11 = path1.split('\\') #相对本py文件所在文件夹的路径,当前为同文件夹
try:
data = pd.read_excel(path1)
except:
print('请把本py文件和数据源放在同一文件夹内,再次尝试。数据源的文件名为:姓名-行政班级归属-教学班-采用志愿.xlsx')
data = pd.read_excel(path11[-1])
return data
#del data['Unnamed: 0']
#data.to_excel('F:\操作区\考试学生座位安排\姓名-行政班级归属-教学班-采用志愿.xlsx',index='')
def getpath():
print('请输入学生数据源文件路径,如:d:\××\××\文件名.xlsx')
path = input()
# 用空写个输入格式 判断 是否正确的 函数
return path
def get_subject():
print('请输入本次 需要按哪一科 安排考室')
sub = ['化学','生物','政治','地理']
sub1 = ['化','生','政','地']
for i in range(len(sub)):
print('\t[{}]{}'.format(i+1,sub[i]),end=' ')
print('请输入数字 代表你的选择')
path = sub1[int(input())-1]
# 用空写个输入格式 判断 是否正确的 函数
return path
def pickout():
pass
def getready(df1,sub1): # df1 是一个数据表 ,sub表示科目:物化地,政史地 六科当中的一种
name_sub1 = []
xclass_sub1 = []
for i in range(len(df1.采用志愿)):
if sub1 in df1.采用志愿[i] :
name_sub1.append(df1.姓名[i])
xclass_sub1.append(df1.行政班归属[i])
df_sub1 = pd.DataFrame({'姓名':name_sub1,'行政班归属':xclass_sub1})
print('这里是考室科目为:{} 的考生样表\n'.format(sub1),df_sub1[0:1])
return df_sub1
def getrest(df1,sub1): # df1 是一个数据表 ,sub表示科目:物化地,政史地 六科当中的一种
name_sub1 = []
xclass_sub1 = []
for i in range(len(df1.采用志愿)):
if sub1 not in df1.采用志愿[i] :
name_sub1.append(df1.姓名[i])
xclass_sub1.append(df1.行政班归属[i])
df_sub1 = pd.DataFrame({'姓名':name_sub1,'行政班归属':xclass_sub1})
print('这里是科目为:{} 的自习安排样表\n'.format(sub1),df_sub1[0:1])
return df_sub1
def get_rooms(path3):
path33 = path3.split('\\')
try:
room = pd.read_excel(path3)
except:
print('绝对路径出错,尝试相对路径')
room = pd.read_excel(path33[-1])
print('这里是考室容量样表\n',room[0:1])
return room
def randomsort(room,temp_df):
result_df = temp_df[0:1]
##随机把 temp_df