用for循环实现day_of_the_year函数:年积日计算及代码问题排查
你的
day_of_the_year函数代码问题分析 你的代码存在以下几个关键问题:
- 循环遍历对象错误:
for number in day_of_the_year:这行里,day_of_the_year是你定义的函数本身,不是可迭代的数值范围,运行时会直接抛出类型错误,因为函数对象不能被遍历。 - 累加逻辑完全写死:
total = days_per_month[0] + days_per_month[1] + 5这行固定计算1月+2月的天数再加5,完全没有根据传入的month和day参数动态调整,不管用户输入什么月份日期,返回结果都是64,和需求完全不符。 - 循环未生效就直接返回:在循环内部第一行就执行
return total,导致循环根本没有实际迭代的机会,失去了用循环累加前序月份天数的意义。 - 未使用输入参数:代码里完全没用到传入的
month和day两个参数,等于函数的返回值和输入无关,完全不符合函数的设计要求。 - 未处理月份索引转换:输入的
month是1-based(1代表1月),而days_per_month列表是0-based索引,需要累加前month-1个元素的和,你的代码没有做这个转换处理。
修正后的示例代码
def day_of_the_year(month, day): days_per_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] total_days = 0 # 累加目标月份之前所有月份的天数 for i in range(month - 1): total_days += days_per_month[i] # 加上当月的日期 total_days += day return total_days
内容的提问来源于stack exchange,提问作者roTenshi2
相关产品推荐
相关产品推荐

