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

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

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

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

首先是输入的问题,个人认为分别输入年月份是一件很初级的要求,就实现了形如“2020-3-26”的字符串解析的两种方法,代码如下:

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()

以下是全部代码:

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博客!

用python计算今天是今年的第几天_Python计算指定日期是今年的第几天(三种方法)...相关推荐

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

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

  2. Python课堂:判定IP地址合法性的三种方法

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

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

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

  4. pca算法python实现_三种方法实现PCA算法(Python)

    主成分分析,即Principal Component Analysis(PCA),是多元统计中的重要内容,也广泛应用于机器学习和其它领域.它的主要作用是对高维数据进行降维.PCA把原先的n个特征用数目 ...

  5. python判断ip地址是否合法_Python课堂:判定IP地址合法性的三种方法

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

  6. python 多因素方差分析_多因素方差分析估计平方和的三种方法

    在做多因素方差分析时,有三种方法计算平方和(以模型Y ~ A + B + A:B为例,即先输入A,再输入B,最后输入交互项A:B):Type Ⅰ Sums of Squares(Type1, sequ ...

  7. python记录程序运行时间的三种方法

    这里提供了python记录程序运行时间的三种方法,并附有实现代码,最后进行比较,大家参考下: 方法1 import datetime starttime = datetime.datetime.now ...

  8. python实现逻辑回归三种方法_纯Python实现逻辑回归

    前几天使用后sklearn实现了逻辑回归,这里用纯python实现逻辑回归. 首先,我们定义一个sigmoid函数 def sigmoid(inX): #sigmoid函数 return 1.0/(1 ...

  9. 互相关函数python实现的三种方法

    本人前段时间在做地震波分析的时候用到互相关函数的计算,所以做了一些具体的研究和分析.用python实现信号的互相关可以有三种方法:一.直接用时域法.二.用频域法.三.python提供的numpy.co ...

最新文章

  1. json-lib 常用功能
  2. vimproc_mac.so” is not found
  3. python自动发邮件运行正常就是收不到邮件是为什么_python stmp module 163邮箱发送邮件不成功...
  4. liunx版mysql服务无法启动_linux环境下mysql无法启动
  5. 博文视点读书节第七日丨IT大咖来荐书,CS提升分享今晚开播,晒单赢福袋活动上线!
  6. 宽带认证客户端_cisco PPPOE 服务端与客户端 配置命令
  7. 怎么从altera官网下载那款fpga芯片数据手册
  8. Hadoop原理和特性
  9. 内部收益率计算公式用计算机,使用EXCEL函数公式计算内部收益率,请请人解决,非常感谢! ! !...
  10. 深度学习基础技术分析2:神经网络(含代码分析)
  11. Fabric.js 铅笔笔刷
  12. 查询计算机上可用端口的两种方法
  13. 矩形区域的泊松方程,深度学习模拟差分法
  14. openstack块存储服务基础:Linux LVM硬盘管理及LVM扩容
  15. 顶级文案到底需要怎么嗨?
  16. MyBatis插件:通用mapper的配置和应用
  17. crm系统收费多少?
  18. 机器学习-决策树分类算法与应用
  19. 小程序云开发入门——问卷测评小程序实战(5)
  20. 公众号增粉方式有哪些,最有效的是哪一种?

热门文章

  1. 问题解决,心情不错:)
  2. linux设备模型之mmc子系统
  3. 《一》Android 数据库 SQlite SQLiteOpenHelper
  4. 基于Python-turtle库绘制路飞的草帽骷髅旗、美国队长的盾牌、高达
  5. Gstreamer应用g_signal_new/g_signal_connect/g_signal_emit总结(十二)
  6. Go两个协程生产消费者模型
  7. Android 性能优化之TraceView的使用
  8. Android解压/重新打包system.img
  9. android系统签名
  10. 深度学习自学(十四):人脸检测-出现cudaGetDeviceCount failed