如何用Python实现任务的近似均等分配?附分桌场景示例
任务均分的Python解决方案
需求明确:把指定数量的任务(比如桌子)近似均分给N个人,规则是:
- 总任务数能被人数整除时,每人分到相同数量
- 不能整除时,前「总任务数%人数」个人多分到1个,其余人分基础值(比如35张桌子分给3人,结果是[12,12,11])
你当前代码的问题出在余数处理逻辑:额外生成了新的分配项,导致结果变成基础值加零散的余数项,而非在原有人员的分配额度上增加。
修正后的代码
n = len(ri_ot_curr) div2 = count2 // n # 每人基础任务数 rem2 = count2 % n # 剩余需额外分配的任务数 # 先给前rem2个人分配div2+1个任务 for i in range(rem2): person = ri_ot_curr[i] c = 0 for start in range(len(tft)): # 修正原代码语法错误(多余的a:) if tft.loc[start, 'Release Date'] == f'Release {release_date}': tft.loc[start, 'Quant RI - Table'] = person tft.loc[start, 'Date'] = date_tft() c += 1 if c == div2 + 1: break # 给剩下的人分配div2个任务 for i in range(rem2, n): person = ri_ot_curr[i] c = 0 for start in range(len(tft)): if tft.loc[start, 'Release Date'] == f'Release {release_date}': tft.loc[start, 'Quant RI - Table'] = person tft.loc[start, 'Date'] = date_tft() c += 1 if c == div2: break
关键修正点
- 拆分循环逻辑:先处理需要多拿1个任务的人员,再处理基础分配的人员,避免生成多余条目
- 修复原代码中的语法错误(
== 'Release '+str(release_date) a:多余的a:) - 用f-string简化字符串拼接,提升可读性
- 确保每个人员的任务数精准对应,完全符合均分规则
内容的提问来源于stack exchange,提问作者Anil Soren
相关产品推荐
相关产品推荐

