鱼C论坛

 找回密码
 立即注册
查看: 27|回复: 2

[学习笔记] 新人学习贴_计算给定日期是这一年中的第几天

[复制链接]
发表于 昨天 19:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#需求:定义一个函数,该函数接受年份,月份,和日期,作为参数,计算这一天是该年的第几天
  1. def asd(n,y,r):
  2.     t = 0
  3.     if 1 > y or y> 12 :
  4.         return "输入错误!"
  5.     elif r >= 32 or r <= 0 :
  6.         return "输入错误!"
  7.     elif (y == 4 or y == 6 or y == 9 or y == 11 ) and r > 30:
  8.         return "输入错误!"
  9.     elif n % 4 == 0 and n % 100 != 0 or n % 400 == 0:
  10.         if y == 2 and r > 29:
  11.             return "输入错误!"
  12.         february =29
  13.     else:
  14.         if y == 2 and r > 28:
  15.             return "输入错误!"
  16.         february =28
  17.     for e in range(1,y):
  18.         if e != 2 and e != 4 and e != 6 and e != 9 and e != 11 :
  19.             t += 31
  20.         elif e == 2:
  21.             t = t + february
  22.         elif e == 4 or e == 6 or e == 9 or e == 11 :
  23.             t += 30
  24.     t += r
  25.     return t
  26. n = int(input("请输入年份:"))
  27. y = int(input("请输入月份:"))
  28. r = int(input("请输入日:"))
  29. print(asd(n,y,r))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 昨天 19:52 | 显示全部楼层
鱼油你好! 你的代码功能实现正确,能够判断闰年和非闰年,也能处理输入错误。作为新手,能写出逻辑清晰的代码已经很不错了!下面给你提几个简洁的改进建议,让代码更易读、更Pythonic。

1. 函数和变量命名  
asd 建议改为有意义的名称,比如 day_of_year;参数 n, y, r 改为 year, month, day

2. 简化月份天数判断  
可以用列表存储每月天数,然后根据闰年修改2月天数,用 sum 直接计算前几个月的天数。

3. 减少重复的输入校验  
先判断闰年,再统一检查各月份天数,逻辑会更清晰。

下面是一个改进版参考:

  1. def day_of_year(year, month, day):
  2.     if month < 1 or month > 12:
  3.         return "输入错误!"
  4.     days_in_month = [31, 28, 31, 30, 31, 30,
  5.                      31, 31, 30, 31, 30, 31]
  6.     # 闰年判断
  7.     if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
  8.         days_in_month[1] = 29
  9.     if day < 1 or day > days_in_month[month - 1]:
  10.         return "输入错误!"
  11.     return sum(days_in_month[:month - 1]) + day

  12. year = int(input("请输入年份:"))
  13. month = int(input("请输入月份:"))
  14. day = int(input("请输入日:"))
  15. print(day_of_year(year, month, day))
复制代码


这个版本更简洁,并且避免了一长串的 orif 嵌套。如果有其他疑问,欢迎继续交流!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 昨天 20:56 | 显示全部楼层
f谢谢分享
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-5-29 00:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表