新人学习贴_计算给定日期是这一年中的第几天
#需求:定义一个函数,该函数接受年份,月份,和日期,作为参数,计算这一天是该年的第几天def asd(n,y,r):
t = 0
if 1 > y or y> 12 :
return "输入错误!"
elif r >= 32 or r <= 0 :
return "输入错误!"
elif (y == 4 or y == 6 or y == 9 or y == 11 ) and r > 30:
return "输入错误!"
elif n % 4 == 0 and n % 100 != 0 or n % 400 == 0:
if y == 2 and r > 29:
return "输入错误!"
february =29
else:
if y == 2 and r > 28:
return "输入错误!"
february =28
for e in range(1,y):
if e != 2 and e != 4 and e != 6 and e != 9 and e != 11 :
t += 31
elif e == 2:
t = t + february
elif e == 4 or e == 6 or e == 9 or e == 11 :
t += 30
t += r
return t
n = int(input("请输入年份:"))
y = int(input("请输入月份:"))
r = int(input("请输入日:"))
print(asd(n,y,r)) 鱼油你好! 你的代码功能实现正确,能够判断闰年和非闰年,也能处理输入错误。作为新手,能写出逻辑清晰的代码已经很不错了!下面给你提几个简洁的改进建议,让代码更易读、更Pythonic。
1. 函数和变量命名
asd 建议改为有意义的名称,比如 day_of_year;参数 n, y, r 改为 year, month, day。
2. 简化月份天数判断
可以用列表存储每月天数,然后根据闰年修改2月天数,用 sum 直接计算前几个月的天数。
3. 减少重复的输入校验
先判断闰年,再统一检查各月份天数,逻辑会更清晰。
下面是一个改进版参考:
def day_of_year(year, month, day):
if month < 1 or month > 12:
return "输入错误!"
days_in_month = [31, 28, 31, 30, 31, 30,
31, 31, 30, 31, 30, 31]
# 闰年判断
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
days_in_month = 29
if day < 1 or day > days_in_month:
return "输入错误!"
return sum(days_in_month[:month - 1]) + day
year = int(input("请输入年份:"))
month = int(input("请输入月份:"))
day = int(input("请输入日:"))
print(day_of_year(year, month, day))
这个版本更简洁,并且避免了一长串的 or 和 if 嵌套。如果有其他疑问,欢迎继续交流!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 f谢谢分享
页:
[1]