新高考十二种选科情况下,5时间段考试的考室安排探索3.0版3

6种组合安排到各个考室,且每个考室只有一个组合的方法不止有一种,因为40人考室能当32人的用,32人考室能当28人的用.
这次把单个组合的计算空位置的语句改写成了函数.
为了能帮助自己n天后再来看懂这个东西:写下一些说明
形参 zuhe 是一个字符串 ( ‘化生’,‘化政’,'化地’等)
tu 是用来统计 本次计算的循环次数
dx1 是也用来存放 [ 空座位,40人考室数,32人考室数,28人考室数]
嵌套表
zhunumsshuoming 是组合和对应考生的字典结构 {‘化生’:人数}

def dxjisuan(zuhe):
    tu = 0
    dx1 = []
    for i in range(20):
        for ii in range(6):
            for iii in range(3):
                temp = 40 * i + 32 * ii + 28 * iii
                if (temp - zhnumsshuoming[zuhe]) > 0 and (temp - zhnumsshuoming[zuhe]) < 19:
                    tu +=1
                    dx1.append([temp - zhnumsshuoming[zuhe],i, ii, iii])
    return tu , dx1

再建立一个列表

zuhes = ['化生','化政','化地','生政','生地','政地']

就可以开始自动化操作:分别计算六种组合安排时的空位数和安排方式了.

for i in range(len(zuhes)):
    jisuan_temp , dx_temp =dxjisuan(zuhes[i])
    jisuan.append(jisuan_temp)
    dxes.append(dx_temp)

重点是 各个dx列表构成的列表们,dxes
dxes是三重嵌套表:dxes[0----5]分别表示6种组合
下面以 dxes[0][i1]为列,
dxes[0][i1] 表示组合0(化生) 单独计算空座位时,符合要求的第i1种办法,它是个数组表示的方法.dxes[0][i1]的[0]是 dx, [1]是40人考室数 [2]与[3]一次类推.
用嵌套表的好处就是不要去研究 命名规则.有空再去研究 x1 ,x2,x3,这一类的变量命名的自动过程.

接下来就是改进的版2的核心功能:找寻是否有 恰当的安排方法 使得在满足每个考室一个组合的情况下,又符合本校考室情况.如下面的字典所示:40人的19间,32人的6间,28人的1间.(和版2有差别)
{40: 19, 32: 6, 28: 1}

resultdf = pd.DataFrame()
totalbanfa = 0
for i1 in range(len(dxes[0])):
    for i2 in range(len(dxes[1])):
        for i3 in range(len(dxes[2])):
            for i4 in range(len(dxes[3])):
                for i5 in range(len(dxes[4])):
                    for i6 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值