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
相关产品推荐
相关产品推荐

