# 输入年月日,如:1995年12月10日,计算是该年的第几天?
# 同时计算出当天是星期几?

print("请依据提示依次输入您想查询的年 月 日")

# 第一段代码块(年月日输入)开始

# 输入年份并对输入值进行判断其合理性
while True:
    year = int(input("请输入您想查询所在的年份(1970~2038年):"))
    if 1970 <= year <= 2038:
        if (year%4 ==0 and year%100 !=0) or year%400 == 0:
            # leap = 0 表示润年
            leap = 0
            # print(leap)
        else:
            # leap = 1 表示平年
            leap = 1

        print("您输入的年份为%d年" %year)
        break
    else:
        print("您输入的年份为%d年,不在1970年至2038年之间,请您依据提示再次输入" %year)
# 年份输入代码结束

# 输入月份并判断输入值进行判断其合理性,主要分润年和非润年
while True:
    print("-------------------------------------------------")
    month = int(input("请输入您想查询所在的月份:"))
    if 1<= month <= 12:
        print("您输入的月份为%d月" %month)
        break
    else:
        print("您输入的月份为%d,不在1月至12月之间,请您依据提示再次输入" %month)
# 月份输入代码结束

# 1 3 5 7 8 10 12 月31天  4 6 9 11月 30天  润年2月29天   2月28天
# standard_month 表示平年中每个月对应的天数
standard_day = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

# 输入具体时间并对时间进行判断,依据年 月来判断其合理性
while True:
    print("-------------------------------------------------")
    day = int(input("请输入您想查询的具体日期:"))
    if leap ==0:
        if month == 2 and 0 <= day <= 29:
            print("您输入的是%d年%d月%d日" %(year,month,day))
            break
        else:
            print("您输入的日期为%d,超过%d月的最大天数%d天,请您依据提示再次输入" %(day, month, 29))

        if 0 <= day <= standard_day[month-1]:
            print("您输入的是%d年%d月%d日" %(year,month,day))
            break
        else:
            print("您输入的日期为%d,超过%d月的最大天数%d天,请您依据提示再次输入" %(day, month, standard_day[month-1]))

    elif leap == 1:
        if 0 <= day <=standard_day[month-1]:
            print("您输入的是%d年%d月%d日" %(year,month,day))
            break
        else:
            print("您输入的日期为%d,超过%d月的最大天数%d天,请您依据提示再次输入" % (day, month, standard_day[month - 1]))

# 日期代码输入结束
# 第一段代码块(年月日输入)结束

# 第二段代码块(依据输入的年月日判断为该年的第几天)开始

print("-------------------------------------------------")

# 计算天数变量的初始化
sum_day = 0
# 月的约束条件,
# 当输入是month=1月时,(n=1)<(mont=1)时不成立,1月不计入月数累加
# 当输入是month=2月时,(n=1)<(mont=2)时成立,1月计入月数累加
# 依次类推
n = 1

# 循环计算上月及之前月份的累加和(天数)
while n < month:
    sum_day += standard_day[n]
    n += 1

# 计算总天数
sum_day += day

# 判断平润年,如果是平年,则直接输出,如果是润年,则使sum_day数值再加1,
if leap == 0:
    print("您输入的%d年%d月%d日是该年的第%d天" %(year, month, day, (sum_day+1)))
else:
    print("您输入的%d年%d月%d日是该年的第%d天" %(year, month, day, sum_day))
# 第二段代码块(判断该日期是该年的第几天)结束

# 第三段代码块(判断该天是星期几)开始
print("-------------------------------------------------")

from datetime import datetime
# datetime模块中有delta类,这个类的对象用于表示一个时间间隔,比如两个日期或者时间的差别

# 格式化输入时间
get_day = datetime(year,month,day)
# 格式化初始时间1970年1月1日 星期四
standard_day = datetime(1970,1,1)

# diff_day = get_day - standard_day 该段代码输出的为 1 days 00:00:00
# 输入日期与起始1970年1月1日 星期四 之间的相差天数diff_day
diff_day = (get_day - standard_day).days #经过修改过后,这样输出就是日期了

# 相差天数对7取余数
week_day = diff_day % 7
# week_day 余数加上1970年1月1日当天星期四的天数
week_day += 4
# 两者相加可能会大于7,if判断循环
if week_day >7:
    week_day %= 7
    print("您输入的%d年%d月%d日是星期%d" %(year, month, day, week_day))
else:
    print("您输入的%d年%d月%d日是星期%d" %(year, month, day, week_day))
# 第三段代码块(判断该天是星期几)结束

# import sys

# sys.exit()结束程序循环

Python练习笔记——计算输入日期为改年的第几天、星期几的更多相关文章

  1. 吴裕雄--天生自然python学习笔记:Python3 日期和时间

    Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能. Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间. 时间间隔是以秒为单位的浮点小数. ...

  2. Python练习笔记——计算个人体重指数

    输入您的身高 体重 性别 计算出你的体重是否标准 gender = input('请输入您的性别(boy or girl):') height = input('请输入您的身高(单位cm):') he ...

  3. Python练习笔记——对输入的数字进行加和

    请您输入数字,每个数字采用回车结束,当您输入型号*时,则结束数字输入,输出所有数字的总和 def num_sum(): i = 0 while True: get_num = input(" ...

  4. python练习笔记——计算1/1-1/3+1/5-1/7……的和

    1 / 1 - 1 / 3 + 1 / 5 - 1 / 7 + ....求100000个这样的分式计算之为是多少?将此值乘以4后打印出来,看看是什么? num_list = [] count = -1 ...

  5. python小案例-计算输入两个数的最大公约数与最小公倍数

    # 计算最大公约数 def gcd(x,y): """ 计算最大公约数 :param x:一个正整数 :param y:一个正整数 :return:x,y的最大公约数 & ...

  6. Problem D: 结构体:计算输入日期是该年的第几天

    #include <stdio.h> struct time{ int year; int month; int day;}; int main(void) { struct time s ...

  7. Python中判断是否为闰年,求输入日期是该年第几天

    #coding = utf-8 def getLastDay(): y = int(input("Please input year :")) m = int(input(&quo ...

  8. Python编程从入门到实践笔记——用户输入和while循环

    Python编程从入门到实践笔记——用户输入和while循环 #coding=utf-8 #函数input()让程序暂停运行,等待用户输入一些文本.得到用户的输入以后将其存储在一个变量中,方便后续使用 ...

  9. Python datetime time 等时间 日期 之间的计算和相互转化

    from datetime import datetime, date, timedelta, timezone from time import time, ctime, localtime, st ...

随机推荐

  1. iOS开发-DatePicker控件

    时间控件不管是Android还是iOS中都是必然存在的一个控件,具体的效果大同小异,显示日期,时间,iOS中有四种方式可以选择,Time, Date,Date and Time  , Count Do ...

  2. Java主流Web Service框架介绍:CXF和Axis2

    CXF和Axis2是目前java平台上最主流的两个框架,虽然两个项目都隶属ASF,但却是基于不同思想和风格实现的,因此也各有所长.   CXF:http://cxf.apache.org/ 是由过去的 ...

  3. 【架构】SpringCloud 注册中心、负载均衡、熔断器、调用监控、API网关示例

    示例代码: https://github.com/junneyang/springcloud-demo 参考资料: SpringCloud系列 Eureka 一句话概括下spring框架及spring ...

  4. 敏捷方法之极限编程(XP)和 Scrum区别

    敏捷(Agile)作为一种开发流程, 目前为各大公司所采用, 敏捷流程的具体实践有XP 和Scrum, 似乎很少有文章介绍这两者的区别, 发现一篇外文, 见解非常深刻, 特将其翻译一把. 原文(DIF ...

  5. 如何利用Framework模型生成IQD文件

    很多Cognos的新手在接触Transform建模的时候对于iqd文件都有一种朦胧的感觉,当然也不必去死记硬别它的格式,下面我们就来说一下如何用Framework工具来生成iqd文件. 1:打开fra ...

  6. Python构造字符串

    不断报错 coercing to Unicode : 不要用+连接字符串,要用格式化字符串 None的问题:只能用 or “”的方式来解决了 not all arguments converted d ...

  7. C++中无法解析的外部符号错误

      在编译C++程序的时候,如果引用了对应的头文件,但是调用一个函数的时候仍然出现" 无法解析的外部符号错误"的编译错误,比如: 无法解析的外部符号__imp__PathFileE ...

  8. 没有main函数的helloworld

    差点儿全部程序猿的第一堂课都是学习helloworld程序,以下我们先来重温一下经典的C语言helloworl /* hello.c */ #include <stdio.h> int m ...

  9. ZH奶酪:通过CSS自定义HTML中hr样式-颜色-形状

    修改颜色,线条形状,粗细等... CSS代码: .zh_hr{ border:3px solid rgba(255, 255, 255, 0.50); margin-bottom: 2px; marg ...

  10. MVC模式下值的传递

    公司项目转用MVC开发,故学习总结一下mvc会用到的常用传值方法:       正如大家都熟悉的,MVC路由及运行机制是:       首先,Web 浏览器向服务器发送一条URL 请求,如http:/ ...