You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python编写适配变量动态增减的共同空闲时段匹配算法咨询

好友空闲时段匹配算法优化方案

原代码存在的问题

  • 硬编码固定遍历5天、7节课,后续调整作息、新增周末需要手动修改多处代码
  • 只能固定匹配d、k两个用户的共同空闲,新增/删除好友需要手动修改判断条件
  • 索引逻辑固定,数据长度变化容易出现索引越界报错

优化后代码

exec(open("data.py").read()) 

# 周列表,后续新增周六周日直接在此处添加即可
week_days = ["monday", "tuesday", "wednesday", "thursday", "friday"]
# 所有用户的空闲数据数组,新增/删除用户仅需调整此列表
user_list = [d, k, m]
# 动态计算可匹配的最大天数,避免索引越界
max_day = min(len(u) for u in user_list)
# 每日最大课程节数,可根据实际情况调整
max_course = 10

free = []
for day_idx in range(max_day):
    current_day_free = [week_days[day_idx]]
    for course in range(1, max_course + 1):
        # 校验所有用户当前时段是否都空闲
        is_all_free = True
        for user_data in user_list:
            if course not in user_data[day_idx]:
                is_all_free = False
                break
        if is_all_free:
            current_day_free.append(course)
    free.append(current_day_free)
    print(current_day_free)

# 若需将结果写回data.py可使用下方代码
with open("data.py", "a", encoding="utf-8") as f:
    f.write(f"\nfree = {free}\n")

可选更安全的存储方案

原方案使用exec加载外部py文件存在安全风险,可改用json格式存储数据:

写入数据

import json
save_data = {"m": m, "d": d, "k": k}
with open("data.json", "w", encoding="utf-8") as f:
    json.dump(save_data, f, ensure_ascii=False, indent=2)

读取数据

import json
with open("data.json", "r", encoding="utf-8") as f:
    load_data = json.load(f)
m, d, k = load_data["m"], load_data["d"], load_data["k"]

内容的提问来源于stack exchange,提问作者pepusmaximus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 13:24:06