python计算今年第几天_Python三种方法计算指定日期是今年的第几天
今天早上和腾讯面试官进行了视频面试,由于音量和网络以及我的垃圾电脑的原因,个人感觉黄了...
最后面试官给了我一道简单的计算题:指定日期是今年的第几年
由于电脑卡到打字都打不动,我勉勉强强写了一点,虽然面试官知道了我的想法也了解我的设备情况,最后没让我写完
但是心里惭愧还是时候补齐了...话不多说回到主题吧
首先是输入的问题,个人认为分别输入年月份是一件很初级的要求,就实现了形如“2020-3-26”的字符串解析的两种方法,代码如下:
1 def cal_date_str_spilt(date):
2 ''''
3 处理形如"2020-3-26"
4 使用字符串的spilt方法解析
5 '''
6 _year = int(date.split('-')[0])
7 _month = int(date.split('-')[1])
8 _day = int(date.split('-')[2])
9 return [_year, _month, _day]
10
11 def cal_date_str_time(date):
12 '''
13 使用time库内置函数strptime(string, format) return struct_time对象
14 传入参数:字符串 + 处理格式
15 '''
16 _date = time.strptime(date, '%y-%m-%d')
17 _year = _date.tm_year
18 _month = _date.tm_mon
19 _day = _date.tm_mday
20 return [_year, _month, _day]
然后判断是否闰年
1 def judge_leap_year(year, month):
2 # 只有闰年且月份大于2月才加多一天
3 if year % 400 == 0 or year % 100 and year % 4 == 0 and month > 2:
4 return 1
5 else:
6 return 0
主函数
1 def main():
2 date = input("请输入日期,以'-'分隔:")
3 sum_1, sum_2 = 0, 0
4 date_list_1 = cal_date_str_spilt(date)
5 date_list_2 = cal_date_str_time(date)
6
7 month_day = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
8 month_day_lep = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
9
10 sum_1 += sum(month_day[:date_list_1[1] - 1]) + date_list_1[2] + judge_leap_year(date_list_1[0], date_list_1[1])
11 sum_2 += sum(month_day[:date_list_2[1] - 1]) + date_list_2[2] + judge_leap_year(date_list_2[0], date_list_2[1])
12 print('今天是今年的第' + str(sum_1) + '天')
13 print('今天是今年的第' + str(sum_2) + '天')
14
15 '''
16 这一段是使用了datetime库的方法,python本身就有处理该类问题的方法
17 '''
18 _sum = datetime.date(date_list_1[0], date_list_1[1], date_list_1[2])
19 sum_3 = _sum.strftime('%j')
20 if sum_3[0] == '0' and sum_3[1] == '0':
21 print('今天是今年的第' + str(sum_3[-1:]) + '天')
22 elif sum_3[0] == '0':
23 print('今天是今年的第' + str(sum_3[-2:]) + '天')
24 else:
25 print('今天是今年的第' + str(sum_3) + '天')
26
27 if __name__ == '__main__':
28 main()
以下是全部代码:
import datetime
import time
def cal_date_str_spilt(date):
''''
处理形如"2020-3-26"
使用字符串的spilt方法解析
'''
_year = int(date.split('-')[0])
_month = int(date.split('-')[1])
_day = int(date.split('-')[2])
return [_year, _month, _day]
def cal_date_str_time(date):
'''
使用time库内置函数strptime(string, format) return struct_time对象
传入参数:字符串 + 处理格式
'''
_date = time.strptime(date, '%y-%m-%d')
_year = _date.tm_year
_month = _date.tm_mon
_day = _date.tm_mday
return [_year, _month, _day]
def judge_leap_year(year, month):
# 只有闰年且月份大于2月才加多一天
if year % 400 == 0 or year % 100 and year % 4 == 0 and month > 2:
return 1
else:
return 0
def main():
date = input("请输入日期,以'-'分隔:")
sum_1, sum_2 = 0, 0
date_list_1 = cal_date_str_spilt(date)
date_list_2 = cal_date_str_time(date)
month_day = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
month_day_lep = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
sum_1 += sum(month_day[:date_list_1[1] - 1]) + date_list_1[2] + judge_leap_year(date_list_1[0], date_list_1[1])
sum_2 += sum(month_day[:date_list_2[1] - 1]) + date_list_2[2] + judge_leap_year(date_list_2[0], date_list_2[1])
print('今天是今年的第' + str(sum_1) + '天')
print('今天是今年的第' + str(sum_2) + '天')
'''
这一段是使用了datetime库的方法,python本身就有处理该类问题的方法
'''
_sum = datetime.date(date_list_1[0], date_list_1[1], date_list_1[2])
sum_3 = _sum.strftime('%j')
if sum_3[0] == '0' and sum_3[1] == '0':
print('今天是今年的第' + str(sum_3[-1:]) + '天')
elif sum_3[0] == '0':
print('今天是今年的第' + str(sum_3[-2:]) + '天')
else:
print('今天是今年的第' + str(sum_3) + '天')
if __name__ == '__main__':
main()
如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!
python计算今年第几天_Python三种方法计算指定日期是今年的第几天相关推荐
- python怎么计算相关系数_Python三种方法计算皮尔逊相关系数
1.皮尔逊相关系数在统计学中,皮尔逊相关系数( Pearson correlation coefficient),又称皮尔逊积矩相关系数(Pearson product-moment correlat ...
- Python:三种方法计算最大公约数和最小公倍数(欧几里德法、穷举法、stein算法)
Python:三种方法计算最大公约数和最小公倍数 1.穷举法 2.欧几里德法 3.Stein算法 题目:求取任意两个非负数(至多一个数为0)的最大公约数和最小公倍数: 参考资料:Python解决求最大 ...
- 利用CASS使用三种方法计算两期土方
软件及数据准备:南方CASS9.1:开挖前后的坐标高程数据dat格式. 计算方法:方格网网法.三角网法.断面法. 首先,绘出计算的范围线,注意开挖前后范围线一般相同.为了方便后续的三种方法计算,先生成 ...
- python if多条件并列判断的三种方法
python if多条件并列判断的三种方法 如果使用python的if进行多个条件表达式的判断呢?下面介绍三种方法: 使用and或or来连接多个条件表达式,比如条件1 and 条件2 and条件3等等 ...
- 基于Python实现中文文本关键词抽取的三种方法 课程报告+项目源码及数据
资源下载地址:https://download.csdn.net/download/sheziqiong/85737856 资源下载地址:https://download.csdn.net/downl ...
- Python除法保留两位小数点(三种方法实现)
Python除法保留两位小数点(三种方法实现) 前言序锦 学过编程我们都知道,无论什么语言,其实都是相通的,,当我们学会了并掌握好了一种语言后,我们再去了解另外一种语言,其实就很容易了,今天我们就来一 ...
- 斐波那契数列三种方法计算,光棍节快乐
//斐波那契数列三种方法计算 //Fibnacci(0)=0 //Fibnacci(1)=1 //Fibnacci(n)=Fibnacci(n-1)+Fibnacci(n-2) [n>1] / ...
- Python:判定IP地址合法性的三种方法
IP IP合法性校验是开发中非常常用的,看起来很简单的判断,作用确很大,写起来比较容易出错,今天我们来总结一下,看一下3种常用的IP地址合法性校验的方法. IPv4的ip地址格式:(1255).(02 ...
- python修改类的属性值_python 四种方法修改类变量,实例对象调用类方法改变类属性的值,类对象调用类方法改变类属性的值,调用实例方法改变类属性的值,直接修改类属性的值...
三种方法修改类变量,实例对象调用类方法改变类属性的值,类对象调用类方法改变类属性的值,调用实例方法改变类属性的值,类名就是类对象,city就是类变量, #coding=utf-8 class empl ...
最新文章
- break continue
- C 不重复地输出升序数组中的元素
- 热部署在java中的包名_09-springboot工程中的热部署实现。
- python legb_Python变量作用域LEGB用法解析
- 化妆definer是什么意思_化妆品上的r是什么意思
- Safari浏览器不支持……
- PHP输出当前进程所有变量 / 常量 / 模块 / 函数 / 类
- 字段与属性 c# 1613532992
- 云计算一周动态2016-07-11
- css3中的box-sizing的用法
- 2021年应用市场放假安排
- 一些计算机模拟人脑项目
- 远程控制计算机控制不,远程控制电脑为什么打不了字
- 高中计算机必修选修知识点,新课标高中数学必修+选修全部知识点精华归纳总结...
- Java进阶(五十)根据一个给定经纬度的点,进行附近500米地点查询–合理利用算法
- 简单c/c++笔试题 .
- 贪吃蛇游戏实践(附源码),链表的应用!
- 国家重点实验室分布转
- 学习感悟(局部模式的人脸识别研究)
- Java开发的校园外卖系统源码小程序app
热门文章
- 企业级工作流解决方案(十六)--工作流--工作流实体模型
- Dubbo的微内核机制
- ubuntu16.04升级 vim 8.0
- 这个小伙因WannaCry勒索软件一夜成名,获得一年免费披萨
- 阿里云数加产品家族图首次亮相
- python 魔法方法之:__getitem__ __setitem__ __delitem__
- 戴尔XPS-13超级本赏析
- Fckeditor漏洞汇总
- 关于 # 符号的使用 - 给 厨师 的回复
- 聊聊 Spring Boot 2.x 那些事儿