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

Python日程提醒脚本单日多任务仅显示一个的问题求助

解决单日多任务仅显示一个的问题

你的问题核心是每次循环都会覆盖reminder1和reminder2变量,导致最后只保留了最后一个匹配到的任务。用列表来存储每日任务就能解决这个问题,而且实现起来简单易懂,适合新手。

修改后的完整代码

import openpyxl as xl
from datetime import date

# 初始化空列表,用来存当日和次日的所有任务
reminder_today = []
reminder_tomorrow = []

# 把日期计算移到循环外面,避免重复计算浪费资源
today = date.today()
today_day = today.strftime("%A")
weekday_index = today.weekday()
days_list = ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
# 处理周日边界:用取模确保周日的次日是周一,不会索引越界
tomorrow_day = days_list[(weekday_index + 1) % 7]

workbook = xl.load_workbook('Schedule.xlsx')
sheet = workbook['Sheet1']

# 遍历表格列和行
for column in range(2, sheet.max_column + 1):
    # 提前读取当前列对应的星期,减少重复操作
    current_column_day = sheet.cell(1, column).value
    for row in range(2, sheet.max_row + 1):
        time = sheet.cell(row, 1).value
        task = sheet.cell(row, column).value
        
        # 单元格有任务内容时,再判断归属日期
        if task is not None:
            if current_column_day == today_day:
                reminder_today.append(f"{time}: {task}")
            elif current_column_day == tomorrow_day:
                reminder_tomorrow.append(f"{time}: {task}")

# 处理无任务的情况,避免打印空内容
today_content = "\n".join(reminder_today) if reminder_today else "无任务"
tomorrow_content = "\n".join(reminder_tomorrow) if reminder_tomorrow else "无任务"

print(f"""REMINDER:
Today:
{today_content}
Tomorrow:
{tomorrow_content}""")

关键修改说明

  • 用列表存任务:把单个变量换成列表,每次匹配到任务就用append()追加,不会覆盖之前的内容
  • 日期计算提至循环外:原来每次循环都重复算日期,移到外面只算一次更高效
  • 边界处理:用取模运算解决周日次日索引越界的问题
  • 空任务友好提示:判断列表是否为空,打印时显示“无任务”,避免空行或报错
  • 减少重复读取:提前读取当前列的星期值,避免循环中重复访问单元格

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 05:55:31