
在输入日期为2023-3-31后就没有输出了,还有在输入日期的月份为8月时显示e变量没有
range函数是前含后不包

没有e变量,暂时没看出来,您发代码片吧😄午休时给您捋捋。
您整段代码的功用是想输出所输入日期是当年的第n天吧,if太多,让人有些无所适从。中午我给捋捋,代码应该可以精简下。
按您思路,重构代码。调试成功


苗条优雅的python代码
#!/sur/bin/nve python
# coding: utf-8
leapyear = lambda year: 29 if not year%4 and year%100 or not year%400 else 28 # 单行匿名函数lambda:三元操作语句计算输入年份2月的天数。(闰年规则:年份被4整除但不能被100整除,或者被400整除)
def countDay(year, month, day):
days = day # 输入年份最后一月的天数为总天数初值。
for m in range(1, month): # 遍历整月。
days += 31 if m in (1, 3, 5, 7, 8, 10, 12) else 30 if m in (4, 6, 9, 11) else leapyear(year) # 大月+31,平月+30,2月+leapyear函数返回值。
return days
if __name__ == '__main__':
print(countDay(*map(int, input('\n输入(如2023-11-1):').strip().split('-')))) # map函数前面的*用于“破壳”,把map的三个元素赋值给year、month、day形参。