输入某年某月某日,判断这一天是这一年的第几天?

当时老师让我们做这道题是想锻炼我们的“选择循环方法”,所以用选择循环方法:

第一种方法解析:

1,3,5,7,8,10,12三十一天永不差,其余是30天,2月是28天(闰年是29天)
先假设每一个月都是30天,然后再计算有几个31天和28(或29天)的月份
1-2月是一个计算段,3-7是一个计算段,8-12是一个计算段

代码

date = input('输入某年某月某日,格式为:****-**-**,小于10请写0*:')
# 使用切片截取年,月,日
year = int(date[0:4])
month = int(date[5:7])
day = int(date[8:])
# 判断是否是闰年,并为每一月赋值
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:feb = 29
else:feb = 28
# 1-2月是一个计算段,3-7是一个计算段,8-12是一个计算段
result = 0
if feb == 29:if 1 <= month <= 2:result = (month - 1) * 30 + day + int(month / 2)elif 2 < month <= 7:result = (month - 1) * 30 + day + int(month / 2) - 1elif 12 >= month > 7:result = 213 + (month - 8) * 30 + day + int((month - 7) / 2)
elif feb == 28:if 1 <= month <= 2:result = (month - 1) * 30 + day + int(month / 2)if 2 < month <= 7:result = (month - 1) * 30 + day + int(month / 2) - 2elif 12 >= month > 7:result = 212 + (month - 8) * 30 + day + int((month - 7) / 2)print('{}-{}-{}是一年中的第{}天'.format(year, month, day, result))

上面是我自己写的代码,然后我查阅了一下其他人写的,顿时发现我写的好low

第二种方法解析

一年12个月份放入列表中,其中二月特殊表示(闰年29天,其他28天),

代码

示例一:

有些人运行示例一可能报错,但是我在我的电脑上调试确实是没有问题的,可能是Python版本的原因,我的运行环境是Python3.10,

date = input('输入某年某月某日,格式为:****-**-**,小于10请写0*:')
# 使用切片截取年,月,日
year = int(date[0:4])
month = int(date[5:7])
day = int(date[8:])
# 判断是否是闰年,并为每一月赋值
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:feb = 29
else:feb = 28
date1 = [31, feb, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
res = 0
i = 0
for i in date1[0:month - 1]:res = res + i
res += day
print('{}-{}-{}是一年中的第{}天'.format(year, month, day, res))

示例二

import re
import calendar
# 定义一个月份的列表,2月暂时按照28天,如果是闰年就加一,month[0]无意义,只是为了让month[1]代表1月
month = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
ri_qi = input("请输入日期:yyyy-mm-dd")
# 正则表达式提取年月日
ri_qi_result = re.search(r"(?P<y>\d+).(?P<m>\d+).(?P<d>\d+)", ri_qi)
y_ = int(ri_qi_result.group("y"))  # 年
m_ = int(ri_qi_result.group("m"))  # 月
d_ = int(ri_qi_result.group("d"))  # 日
if calendar.isleap(y_):month[2] = 29
else:month[2] = 28
day = d_
for i in range(1,m_):day += month[i]
print("{}-{}-{}是第{}天".format(y_,m_,d_,day))

第三种方法,如果配合Python中的 calendar 标准库,可以把判断闰年的一长串代码直接用isleap()函数代替

代码

import calendarif calendar.isleap(year):feb = 29
else:feb = 28
date2 = [31, feb, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
res = 0
i = 0
for i in date2[0:month-1]:res = res + i
res += day
print('{}-{}-{}是一年中的第{}天'.format(year, month, day, res))

结果

输入某年某月某日,判断这一天是这一年的第几天?(Python)相关推荐

  1. python输入某年某月某日判断这是第几天_Python编程实现输入某年某月某日计算出这一天是该年第几天的方法...

    本文实例讲述了Python编程实现输入某年某月某日计算出这一天是该年第几天的方法.分享给大家供大家参考,具体如下: #基于 Python3 一种做法: def is_leap_year(year): ...

  2. java那一年出来的_输入某年某月某日 判断其是那一年的第多少天

    [java]代码库Scanner scan = new Scanner(System. in); System. out .print("请输入年:" ); int year = ...

  3. 代码实现:输入某年某月某日,判断这一天是这一年的第几天?

    import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; impor ...

  4. 输入某年某月某日,Java判断这一天是这一年的第几天?

    输入某年某月某日,判断这一天是这一年的第几天? package p3;一.class judgedaypublic class judgeday {public static void main(St ...

  5. 【C语言】题目:输入某年某月某日,判断这一天是这一年的第几天?

    题目:输入某年某月某日,判断这一天是这一年的第几天? 题目分析: 设日期为:A年X月Y日 1.判断A年是否为闰年(确定是2月份的天数) 2.判断这是X月,加上前(X-1)月的总天数Z 3.判断这是Y日 ...

  6. 第四题:输入某年某月某日,判断这一天是这一年的第几天?

    #输入某年某月某日,判断这一天是这一年的第几天? '''思路:首先年月日是分着输入还是一块输入,想到如果一块输入可能还需要分割分别找到年月日 所以还是分着输入比较好:接着考虑计算天数其实就是往常月份的 ...

  7. Java输入某年某月某日,判断这一天是这一年的第几天?

    分析:大家都知道,每年的总共日期,要么就是365天,要么就是366天,具体是取决于闰年还是平年,更确切的说就是每年二月是28天还是29天,归结到这个问题,有一个关键的认识点,就是求解这一年是闰年(36 ...

  8. python求输入某年某月某日,判断这一天是这一年的第几天

    方法一: """ 3.输入某年某月某日,判断这一天是这一年的第几天 """ year = int(input("请输入年分:&qu ...

  9. C语言例题:输入某年某月某日,判断这一天是这一年的第几天?

    题目:输入某年某月某日,判断这一天是这一年的第几天? 参考程序如下: #include<stdio.h>void main() {int year, month, day,sum,leap ...

  10. 输入某年某月某日,判断这一天是这一年的第几天?(JS实现)

    输入某年某月某日,判断这一天是这一年的第几天?(JS实现) 想知道今天是一年中的第几天吗,我知道你不想,不想也得想,跟着我一起看看这个功能如何利用Javascript实现.首先一个简单的思路就是获取当 ...

最新文章

  1. The Annotated Transformer
  2. 深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-02-基于Python的卷积运算
  3. 【无人机】欧盟发布无人机新规
  4. 返回路径平面上的间隙_返回电流及其与通孔的关系
  5. 我又踩坑了!如何为 HttpClient 请求设置 Content-Type 标头?
  6. 解决Linux下ArcGIS Server的Tomcat不稳定问题,nginx配置反向代理时的一个小问题
  7. 编译OpenCV:precomp.hpp:60:37: fatal error: dynlink_nvcuvid.h
  8. mysql数据库 存储过程_Mysql数据库-存储过程
  9. MAC将latex等大软件安装到移动硬盘
  10. java中求数组中最大值
  11. C语言中char字符为0时的情况
  12. Linux 解决无法清空回收站问题
  13. 网恋中在拿谁的情感玩游戏
  14. JS拉起支付宝,并加好友
  15. Android uart driver
  16. 天猫商品详情接口,天猫商品优惠券接口,天猫api接口,天猫价格监控接口,天猫比价接口,品牌维权接口,天猫销量api接口,接口代码可对接数据分析业务,品牌维权,比价业务,行业分析业务接口代码分享
  17. PointPillars点云检测在OpenPCDet推理代码详解
  18. dnf加物理攻击的卡片有哪些_dnf加物理攻击的宝珠有哪些
  19. 第二十九章 SQL函数 COALESCE
  20. Leetcode1189. “气球” 的最大数量(C++思路与代码)

热门文章

  1. pdf编辑软件哪个好 如何在pdf上修改
  2. 让机器“读懂”放射学报告
  3. ATTCK(对抗性战术,技术和公共知识库)
  4. 客户端渲染(CSR)和服务端渲染(SSR)差别
  5. 潭州学院html学习(day10)
  6. Python流程控制下:循环语句
  7. 我的理想计算机软件设计师,我的理想设计师
  8. 数字逻辑综合工具实践-DC-10——CDC约束
  9. 错误:The ‘pycocotools>=2.0‘ distribution was not found and is required by the application
  10. Grandpa's Estate POJ - 1228(凸包极角序改写)