python基础实例4:天数问题

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

【程序分析】:以3月9日为例,应该先把前两个月的加起来,然后再加上9天即本年的第几天,需要考虑平年和闰年的情况。


1、利用python自带time库计算

#coding=utf-8
from time import *
sd=raw_input("input date(format:20170101):")
days=strptime(sd,'%Y%m%d')[7]
print days
2、利用python自带datetime,计算日期与年初之间的天数

import datetime
sd=raw_input("input date(format:yyyymmdd):")
year=str(datetime.datetime.strptime(sd,'%Y%m%d').year)
d0=datetime.datetime.strptime(year+'0101','%Y%m%d')
sdate=datetime.datetime.strptime(sd,'%Y%m%d')
days=(sdate-d0).days+1
print days
3、根据【程序分析】,累计计算天数

d1=[31,28,31,30,31,30,31,31,30,31,30,31]
d2=[31,29,31,30,31,30,31,31,30,31,30,31]
sdate=raw_input("input date(format:yyyymmdd):")
year=int(sdate[:4])
month=int(sdate[4:6])
day=int(sdate[6:8])
if year%100==0:
    if year%400==0:
        d=d2
    else:
        d=d1
else:
    if year%4==0:
        d=d2
    else:
        d=d1
days=sum(d[0:month-1])+day
print days

4、利用dict实现

#coding=utf-8
dict = {1: 31, 2: 28, 3: 31, 4: 30, 5: 31, 6: 30, 7: 31, 8: 31, 9: 30, 10: 31, 11: 30, 12: 31}
sd=raw_input("input date(format:yyyymmdd):")
year=int(sd[:4])
month=int(sd[4:6])
day=int(sd[6:8])
days=0
for i in range(1,month):
    days+=dict[i]

if ((year%4==0 or year%400==0) or year%100==0) and month>2:    #闰年且月份为2以后
    days+=day+1
else:
    days+=day
print days


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值