已知年和该年第二天为星期几ca88会员登录中心,7练习小例子

ca88会员登录中心 9
ca88会员登录中心

闰年总计器

    4):题目:输入某年某月某日,推断那壹天是那年的第几天?

这是自个儿个人对那一个主题材料精晓,可能某些零乱,仅供参考。


主题素材:输入年份,判别该年是不是为闰年。

    先后分析:以七月二十一日为例,应该先把前四个月的加起来,然后再加上三天即今年的第几天,特殊情状,闰年且输入月份大于二时需思虑多加一天。

题目:

       方法:一.能被400整除的年份

    程序源代码:

       编写程序,提醒用户输入年份和表示该年第2天是星期几的数字,然后在决定台上展现该年的日历表。

调节台展现结果如下:(笔者用_表示空格)

ca88会员登录中心 1

图1:以2018年为例

                  2.能被4整除,但无法被100整除

 

首先,说一下自身感到在做那道题从前供给想到的多少个要点:

一,首先,要看清输入的年度是常年照旧闰年,判别闰年的规则是能被四整除且无法被100整除,或能
被400整除

  这里,小编写了三个单独的函数用来表示

ca88会员登录中心 2

图2:判别是不是为闰年

2,第叁,判别完平年如故闰年之后,还亟需汲取每月的运气,供给留神,7月的造化和常年闰年有涉及

 
这里自身动用的是switch语句,也足以应用循环等收获天数,3月的运气调用了后面决断是或不是为闰年的艺术

ca88会员登录中心 3

图三:判定每种月的小运

三,最终,在精晓各类月的运气后,必要驾驭前段日子的第2天从星期几初始,那时就要求取得每种月开端的星期数:(前段时期的天数%7+上月第2天的星期数)%柒

 
这里首先个月的星期数是由用户手动输入获取的,所以,第二个月的星期数,就是她本身,第四个月的星期数是前方八个月,也便是第二个月的星期数,用递归调用比较有利

ca88会员登录中心 4

图肆:获取每一种月第3天是星期几

 1 print('---闰年判断器kql,按q退出---')
 2 while True:
 3     y = input('请输入年份:')
 4     if (y == 'q'):
 5         break
 6     y = int(y)
 7     if (y % 400 == 0 or (y % 4 == 0 and y % 100 != 0)):
 8         print(y,'年为闰年!')
 9     else:
10         print(y,'年为平年!')
11 #Python学习群125240963
#!/usr/bin/python
# -*- coding: UTF-8 -*-

year = int(raw_input('year:\n'))
month = int(raw_input('month:\n'))
day = int(raw_input('day:\n'))

months = (0,31,59,90,120,151,181,212,243,273,304,334)
if 0 < month <= 12:
    sum = months[month - 1]
else:
    print 'data error'
sum += day
leap = 0
if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):
    leap = 1
if (leap == 1) and (month > 2):
    sum += 1
print 'it is the %dth day.' % sum

当自个儿写到这里的时候,笔者还没思虑7天换行的标题,就只是看能否在不利的岗位输出每一种月的一号,于是从头写main函数

此地,kl为自身的类名,(注:类名首字母要大写,不要像笔者同一小写),_代表空格

ca88会员登录中心 5

图伍:main函数内部贯彻

注:以上案例首要涉及到了条件决断if…else…以及涉嫌运算符的知识点。

    以上实例输出结果为:

由此运营后,得出下图所示的结果:

ca88会员登录中心 6

图陆:没写换行的运作结果

说实话,看到那么些结果,着实吓了一跳,随即,作者就发掘,作者没写换行,不过各种月的首后天所在星期数是正确的,依旧窃喜了一小下

 

 

接下去就起来换行的操作

换行的话,正是每到周日就换行,Sun对应的值是0,Sat对应的是6,也正是说,要一口咬住不放当days为陆时换行,便是判别days为星期几,笔者的思绪是,当天的日子加上前段时间伊始的星期数余柒就是目今日期的星期数,可是要留心,前些时间起首的星期数是从0初叶的,所以,总的来讲:

 

year:
2015
month:
6
day:
7
it is the 158th day.

眼明日期的星期数= (当前几日子+当月初阶的星期数-壹)%7

ca88会员登录中心 7

图柒:决断当今天数是星期几

判别完当前天数之后,将要在main函数里选用了,使用要

每月天数总括器

   
看此外四个案例:

看清超越天数是不是为周陆,进行换行:

将以下语句放在图伍的红线出就能够,在if条件里调用dWeak函数

ca88会员登录中心 8

图八:推断是或不是为礼拜六

难题:输入三个月份,决断后一个月有稍许天

 

那般就足以了,运转结果后,就能并发图一的体裁


上述,是笔者在写完将来的一些了解,假设有更加好的方法招待告知(^w^)

最后,用一张图纸甘休呢

ca88会员登录中心 9

    方法:先剖断年份是或不是为闰年或平年,再计算该年度下输入月份的命局

#!/usr/bin/python
# -*- coding: UTF-8 -*-

year=int(raw_input("年:\n"))
month=int(raw_input("月:\n"))
day=int(raw_input("日:\n"))
months1=[0,31,60,91,121,152,182,213,244,274,305,335,366] #闰年
months2=[0,31,59,90,120,151,181,212,243,273,304,334,365] #平年

if ((year%4==0)and(year%100!=0)) or((year%100==0)and(year%400==0)):
    Dth=months1[month-1]+day
else:
    Dth=months2[month-1]+day
print "是该年的第%d天"%Dth
 1 print('---显示月份天数的计算器----')
 2 y = input('请输入年份:')
 3 y = int(y)
 4 m = input('请输入月份:')
 5 m = int(m)
 6 rnd = [0,31,29,31,30,31,30,31,31,30,31,30,31]#闰年每个月天数
 7 pnd = [0,31,28,31,30,31,30,31,31,30,31,30,31]#闰年每个月天数
 8 #由于列表最开始位为0,因此从第一位开始定义
 9 day = 0
10 if (y % 400 == 0 or (y % 4 == 0 and y % 100 != 0)):
11     day = rnd[m]
12 else:
13     day = pnd[m]
14  
15 print('该年下此月份的天数为(天):',day)

    闰年须要同时知足以下条件:

注:第三个案例纵然和与第三个类似,不过进入了列表。

 

 

  • 一、年份能被4整除;
  • 贰、年份要是 100 的平头倍的话需被400整除,不然是常年。

    

#!/usr/bin/python
# -*- coding: UTF-8 -*-

# 输入任意年月日,知道是改年第几天

p = [31,28,31,30,31,30,31,31,30,31,30,31] # 平年
w = [31,29,31,30,31,30,31,31,30,31,30,31] # 闰年

year =int(raw_input("请输入年:"+'\n'))
month =int(raw_input("请输入月:"+'\n'))
day=int(raw_input("请输入日:"+'\n'))

arr=[31,28,31,30,31,30,31,31,30,31,30,31]
sum=day
for i in range(0,month-1):
    sum+=arr[i]
if year%4==0:
    if year%100==0 and year%400!=0:
        print "这是今年的第%d天" % sum
    else:
        sum=sum+1
        print "这是今年的第%d天" % sum
else: 
    print "这是今年的第%d天" % sum

   
再来参考一个:

 

#!/usr/bin/python
# -*- coding: UTF-8 -*-

# 输入任意年月日,知道是改年第几天

p = [31,28,31,30,31,30,31,31,30,31,30,31] # 平年
w = [31,29,31,30,31,30,31,31,30,31,30,31] # 闰年

year =int(raw_input("年:\n"))
month =int(raw_input("月:\n"))
day =int(raw_input("日:\n"))

# 判断闰年,平年

if year % 100 == 0:
    if year % 400 == 0:
        d=w
    else:
        d=p
else:
    if year % 4 == 0:
        d=w
    else:
        d=p

# 计算天数

days = sum(d[0:month-1])+day
print "%d.%d.%d是%d年的第%s天。"%(year,month,day,year,days)

   
还有哦:

 

#!/usr/bin/python
# -*- coding: UTF-8 -*-

year = int(input('请输入年份:'))
month = int(input('请输入月份:'))
day = int(input('请输入日期:'))
total = 0
if year%4 == 0:
    days = 29
else:
    days = 28
if year%4 == 0:
    print year, '年是润年,2月有', days, '天!'
else:
    print year, '年是平年,2月有', days, '天!'
if month <= 1:
    total = day
elif month == 2:
    total = 31 + day
elif month == 9 or month == 11:
    total = (month - 2) * 30 + days + month/2 + day + 1
else:
    total = (month - 2) * 30 + days + month/2 + day
print year, '年',month, '月', day, '日,是这一年的第', total, '天!'

   
完事再来看一个:

 

#!/usr/bin/python

def isLeapYear(a):
    if (0 == a%4 or 0 == a%400) and 0 != a%100 :
        return 1
    else:
        return 0
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}
a = int(input("Input year:"))
b = int(input("Input month:"))
c = int(input("Input day:"))
m = 0
k = isLeapYear(a)
for i in range(1,b):
    m = m + dict[i]
m = m + isLeapYear(a) + c

print(m)

    

#!/usr/bin/env python
# -*- coding: utf-8 -*-

year = int(raw_input('year:\n'))
month = int(raw_input('month:\n'))
day = int(raw_input('day:\n'))
days = [31,28,31,30,31,30,31,31,30,31,30,31]
if year % 400 == 0 or (year % 4 == 0 and year % 100 != 0):
    days[2] += 1

now = sum(days[0:month-1])+day
print 'it is the %dth day.' %now

#!/usr/bin/env python
#coding:utf-8

import time
import sys

reload(sys)
sys.setdefaultencoding('utf-8')  # 设置 'utf-8'  
a = raw_input("输入时间(格式如:2017-04-04):")
t = time.strptime(a,"%Y-%m-%d")
print time.strftime("今年的第%j天",t).decode('utf-8')

    

#! /usr/bin/env python
# coding:utf-8

import time

D=raw_input("请输入年份,格式如XXXX-XX-XX:")
d=time.strptime( D,'%Y-%m-%d').tm_yday
print "the {} day of this year!" .format(d)

    Python3参考解法:

 

#!/usr/bin/python3

date = input("输入年月日(yyyy-mm-dd):")
y,m,d = (int(i) for i in date.split('-'))
sum=0
special = (1,3,5,7,8,10)
for i in range(1,int(m)):
    if i == 2:
        if y%400==0 or (y%100!=0 and y%4==0):
            sum+=29
        else:
            sum+=28
    elif(i in special):
        sum+=31
    else:
        sum+=30
sum+=d
print("这一天是一年中的第%d天"%sum)

   
再来看:

 

#!/usr/bin/python
# -*- coding: UTF-8 -*-

i= int(input('请输入年份:'))
j= int(input('请输入月份:'))
k= int(input('请输入天数:'))
month = [31,28,31,30,31,30,31,31,30,31,30,31]
day = 0
if i%4 == 0  or i %400 == 0 and i%100 != 0: #闰年
    month = month[:j-1]
    if j >2:    #大于2月份
        day = sum(month)+1+k

    elif j== 2 and k ==29:    #刚好在闰年闰天
        day = sum(month)+1+k

    else:                            
        day = sum(month)+k
else:    #平年
    month = month[:j-1]
    day = sum(month)+k

print('这一天是这一年的第{}天'.format(day))

    

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import calendar
year = int(input("year: "))
month = int(input("month: "))
day = int(input("day: "))
days = 0
if 0 < month <= 12:
    _, month_day = calendar.monthrange(year, month)
    if day <= month_day:
        for m in range(1, month):
            _, month_day = calendar.monthrange(year, m)
            days += month_day
        days += day
        print days
    else:
        print "input day error"
else:
    print "input month error"

ca88会员登录中心,    通过总计输入的日期与相应年份11月124日离开的秒数,然后除以每一日的秒数3600*二四,就可以获得输入日期的天数:

 

#!/usr/bin/env python3

import time

def datecount(date):
    date0=date[0:4]+"-01-01"
    datet=time.strptime(date,"%Y-%m-%d")     #将输入的字符串转化为时间元组
    date0t=time.strptime(date0,"%Y-%m-%d")  
    dates=time.mktime(datet)                #将时间元组转化为时间戳
    date0s=time.mktime(date0t)
    count=(dates-date0s)/(3600*24)          #输入日期的时间戳减当前年份0101的时间戳除以每天秒数
    return count+1

a=input("请输入日期:格式如2017-06-16\n")
print("{}是{}年第{}天".format(a,a[0:4],int(datecount(a))))

    思量实际的情景,举个例子输入月份为一七月或输入天数为陆三日时候报错(日期仅核查0-3壹天,未依照实际日期查对):

 

#!/usr/bin/env python
#-*- coding:utf-8 -*-

print('输入年月日以查看某一日期是当年第几天\n')
year = int(input('请输入年份:\n'))
month = int(input('请输入月份:\n'))
day = int(input('请输入日期:\n'))
months = [31,28,31,30,31,30,31,31,30,31,30,31]
d = 0

if 0<month<=12:
    if 0<day<=31:
        d = d + day
        if month > 2:
            if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):
                d = d + 1
        for i in range(12):
            if (i+1) < month:
                d = d + months[i]
                i = i + 1
        print(d)
    else:
        print('输入的日期有错误')
else:
    print('输入的月份有错误')

    通过输入时间点的unix时间戳和输入年份首日的Unix时间戳之间的差,来计量经过的小时:

 

#coding=utf-8
import time
print "Please Enter full number just like 02 01 03"
y = int(raw_input('Enter the year:'))  #分别输入年月日
m = int(raw_input('Enter the month:'))
d = int(raw_input('Enter the day:'))
a = (y,m,d,00,00,00,00,00,00)  #要求长度为9
b = (y,01,01,00,00,00,00,00,00)  #输入年份的第一天
timestampa = time.mktime(a)      #两个都转换为Unix时间戳,即1970.1.1到现在经过的秒数
timestampb = time.mktime(b)
timec = int((timestampa - timestampb)/(3600*24))  #输入的时间戳减去年份首天的时间戳等于经过的秒数,再换算成天,取整
print("There are {} days goes by!".format(timec))

    python三利用time模块,简洁写法:

 

import time
print(time.strptime('2017-9-20', '%Y-%m-%d')[7])

    Python2.x
与 Python3.x 兼容:

 

#!/usr/bin/python
# -*- coding: UTF-8 -*-

# 觉得自己的逻辑看起来更顺眼,嘻嘻!
days = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]
yy = int(input('请输入年份:'))
if yy >= 0:
    mm = int(input('请输入月份:'))
    if 0 < mm < 13:
        dd = int(input('请输入日期:'))
        if ((yy % 4 == 0) and (yy % 100 != 0)) or (yy % 400 == 0):
            if mm <= 2:
                sum = days[mm - 1] + dd
            else:
                sum = days[mm - 1] + 1 + dd
        else:
            sum = days[mm - 1] + dd
        print('您输入的时间在这一年的第%d天' % sum)
    else:
        print('您输入的月分不正确')
else:
    print('请输入正确的公元年')

    

#!/usr/bin/python
# -*- coding: UTF-8 -*-
from functools import reduce

year = int(input('请输入年(如:2017):'))
month = int(input('请输入月(如:3):'))
day = int(input('请输入日(如:16):'))

mday = [0,31,28 if year%4 else 29 if year%100 else 28 if year%4 else 29,31,30,31,30,31,31,30,31,30,31]

print('{}年{}月{}日是当年的第{}天'.format(year, month, day, reduce(lambda x,y:x+y, mday[:month])+day))

    加入极度管理,确定保障日期输入格式正确:

 

import time

while 1:
    try:
        a=input('请输入日期yyyy-mm-dd:')
        b=time.strptime(a,'%Y-%m-%d') #按输入格式转化成时间格式 local变量
    except ValueError:
        print('请输入正确的日期格式!')
    else:
        b=time.strptime(a,'%Y-%m-%d') #按输入格式转化成时间格式 global变量
        dd=time.strftime('%j',b)  #返回一年中的第几天
        yy=time.strftime('%Y',b)  #返回年份
        print('输入的日期是%s年的第%s天'%(yy,dd))
        break

   
基本上便是五花捌门的案例。。。可知诸位的大才。。。

   
就算以为不错的话,请多多点赞协理啊。。。

  原来的书文链接:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图