今天早上和腾讯面试官进行了视频面试,由于音量和网络以及我的垃圾电脑的原因,个人感觉黄了...

最后面试官给了我一道简单的计算题:指定日期是今年的第几年

由于电脑卡到打字都打不动,我勉勉强强写了一点,虽然面试官知道了我的想法也了解我的设备情况,最后没让我写完

但是心里惭愧还是时候补齐了...话不多说回到主题吧

首先是输入的问题,个人认为分别输入年月份是一件很初级的要求,就实现了形如“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三种方法计算指定日期是今年的第几天相关推荐

  1. python怎么计算相关系数_Python三种方法计算皮尔逊相关系数

    1.皮尔逊相关系数在统计学中,皮尔逊相关系数( Pearson correlation coefficient),又称皮尔逊积矩相关系数(Pearson product-moment correlat ...

  2. Python:三种方法计算最大公约数和最小公倍数(欧几里德法、穷举法、stein算法)

    Python:三种方法计算最大公约数和最小公倍数 1.穷举法 2.欧几里德法 3.Stein算法 题目:求取任意两个非负数(至多一个数为0)的最大公约数和最小公倍数: 参考资料:Python解决求最大 ...

  3. 利用CASS使用三种方法计算两期土方

    软件及数据准备:南方CASS9.1:开挖前后的坐标高程数据dat格式. 计算方法:方格网网法.三角网法.断面法. 首先,绘出计算的范围线,注意开挖前后范围线一般相同.为了方便后续的三种方法计算,先生成 ...

  4. python if多条件并列判断的三种方法

    python if多条件并列判断的三种方法 如果使用python的if进行多个条件表达式的判断呢?下面介绍三种方法: 使用and或or来连接多个条件表达式,比如条件1 and 条件2 and条件3等等 ...

  5. 基于Python实现中文文本关键词抽取的三种方法 课程报告+项目源码及数据

    资源下载地址:https://download.csdn.net/download/sheziqiong/85737856 资源下载地址:https://download.csdn.net/downl ...

  6. Python除法保留两位小数点(三种方法实现)

    Python除法保留两位小数点(三种方法实现) 前言序锦 学过编程我们都知道,无论什么语言,其实都是相通的,,当我们学会了并掌握好了一种语言后,我们再去了解另外一种语言,其实就很容易了,今天我们就来一 ...

  7. 斐波那契数列三种方法计算,光棍节快乐

    //斐波那契数列三种方法计算 //Fibnacci(0)=0 //Fibnacci(1)=1 //Fibnacci(n)=Fibnacci(n-1)+Fibnacci(n-2)  [n>1] / ...

  8. Python:判定IP地址合法性的三种方法

    IP IP合法性校验是开发中非常常用的,看起来很简单的判断,作用确很大,写起来比较容易出错,今天我们来总结一下,看一下3种常用的IP地址合法性校验的方法. IPv4的ip地址格式:(1255).(02 ...

  9. python修改类的属性值_python 四种方法修改类变量,实例对象调用类方法改变类属性的值,类对象调用类方法改变类属性的值,调用实例方法改变类属性的值,直接修改类属性的值...

    三种方法修改类变量,实例对象调用类方法改变类属性的值,类对象调用类方法改变类属性的值,调用实例方法改变类属性的值,类名就是类对象,city就是类变量, #coding=utf-8 class empl ...

最新文章

  1. break continue
  2. C 不重复地输出升序数组中的元素
  3. 热部署在java中的包名_09-springboot工程中的热部署实现。
  4. python legb_Python变量作用域LEGB用法解析
  5. 化妆definer是什么意思_化妆品上的r是什么意思
  6. Safari浏览器不支持……
  7. PHP输出当前进程所有变量 / 常量 / 模块 / 函数 / 类
  8. 字段与属性 c# 1613532992
  9. 云计算一周动态2016-07-11
  10. css3中的box-sizing的用法
  11. 2021年应用市场放假安排
  12. 一些计算机模拟人脑项目
  13. 远程控制计算机控制不,远程控制电脑为什么打不了字
  14. 高中计算机必修选修知识点,新课标高中数学必修+选修全部知识点精华归纳总结...
  15. Java进阶(五十)根据一个给定经纬度的点,进行附近500米地点查询–合理利用算法
  16. 简单c/c++笔试题 .
  17. 贪吃蛇游戏实践(附源码),链表的应用!
  18. 国家重点实验室分布转
  19. 学习感悟(局部模式的人脸识别研究)
  20. Java开发的校园外卖系统源码小程序app

热门文章

  1. 企业级工作流解决方案(十六)--工作流--工作流实体模型
  2. Dubbo的微内核机制
  3. ubuntu16.04升级 vim 8.0
  4. 这个小伙因WannaCry勒索软件一夜成名,获得一年免费披萨
  5. 阿里云数加产品家族图首次亮相
  6. python 魔法方法之:__getitem__ __setitem__ __delitem__
  7. 戴尔XPS-13超级本赏析
  8. Fckeditor漏洞汇总
  9. 关于 # 符号的使用 - 给 厨师 的回复
  10. 聊聊 Spring Boot 2.x 那些事儿