Python工作日计算代码问题:结果数量不符且排序错误求助
修正后的物流查询系统代码
你的代码存在以下核心问题:
- 逻辑错误:从起始日期加n天后往回遍历,会漏掉大量工作日,导致收集到的数量不足n个
- 输出顺序错误:倒序遍历导致输出为降序,不符合要求
- 未使用输入的起始星期参数,无法验证输入一致性
以下是修正后的代码:
from datetime import datetime, timedelta # 读取输入 input_weekday = input().strip() required_days = int(input().strip()) start_date_str = input().strip() # 解析起始日期 start_date = datetime.strptime(start_date_str, '%d-%m-%Y') # 验证输入的星期与起始日期匹配(可选,用于防止输入错误) if start_date.strftime('%A') != input_weekday: print("输入的起始星期与起始日期不匹配") # 收集指定数量的工作日 work_days = [] current_date = start_date while len(work_days) < required_days: # 判断是否为工作日(0-4对应周一到周五) if current_date.weekday() < 5: work_days.append(current_date) # 日期往后推一天 current_date += timedelta(days=1) # 按升序输出每个工作日 for date in work_days: print(date.strftime('%d-%m-%Y'))
代码说明:
- 核心逻辑:从起始日期开始逐个往后遍历,筛选出周一到周五的日期,直到收集到
required_days个工作日为止,确保不会遗漏且顺序为升序 - 输入验证:增加了起始星期与起始日期的一致性检查,避免用户输入错误的匹配信息
- 格式规范:严格按照要求的
dd-mm-YYYY格式输出日期
用你的测试场景验证:
输入假设为:
Friday 4 01-03-2019
输出将与预期完全一致:
01-03-2019 04-03-2019 05-03-2019 06-03-2019
内容的提问来源于stack exchange,提问作者John Alderton
相关产品推荐
相关产品推荐

