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

  1. print("请依据提示依次输入您想查询的年 月 日")
  2.  
  3. # 第一段代码块(年月日输入)开始
  4.  
  5. # 输入年份并对输入值进行判断其合理性
  6. while True:
  7. year = int(input("请输入您想查询所在的年份(1970~2038年):"))
  8. if 1970 <= year <= 2038:
  9. if (year%4 ==0 and year%100 !=0) or year%400 == 0:
  10. # leap = 0 表示润年
  11. leap = 0
  12. # print(leap)
  13. else:
  14. # leap = 1 表示平年
  15. leap = 1
  16.  
  17. print("您输入的年份为%d年" %year)
  18. break
  19. else:
  20. print("您输入的年份为%d年,不在1970年至2038年之间,请您依据提示再次输入" %year)
  21. # 年份输入代码结束
  22.  
  23. # 输入月份并判断输入值进行判断其合理性,主要分润年和非润年
  24. while True:
  25. print("-------------------------------------------------")
  26. month = int(input("请输入您想查询所在的月份:"))
  27. if 1<= month <= 12:
  28. print("您输入的月份为%d月" %month)
  29. break
  30. else:
  31. print("您输入的月份为%d,不在1月至12月之间,请您依据提示再次输入" %month)
  32. # 月份输入代码结束
  33.  
  34. # 1 3 5 7 8 10 12 月31天  4 6 9 11月 30天  润年2月29天   2月28天
  35. # standard_month 表示平年中每个月对应的天数
  36. standard_day = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
  37.  
  38. # 输入具体时间并对时间进行判断,依据年 月来判断其合理性
  39. while True:
  40. print("-------------------------------------------------")
  41. day = int(input("请输入您想查询的具体日期:"))
  42. if leap ==0:
  43. if month == 2 and 0 <= day <= 29:
  44. print("您输入的是%d年%d月%d日" %(year,month,day))
  45. break
  46. else:
  47. print("您输入的日期为%d,超过%d月的最大天数%d天,请您依据提示再次输入" %(day, month, 29))
  48.  
  49. if 0 <= day <= standard_day[month-1]:
  50. print("您输入的是%d年%d月%d日" %(year,month,day))
  51. break
  52. else:
  53. print("您输入的日期为%d,超过%d月的最大天数%d天,请您依据提示再次输入" %(day, month, standard_day[month-1]))
  54.  
  55. elif leap == 1:
  56. if 0 <= day <=standard_day[month-1]:
  57. print("您输入的是%d年%d月%d日" %(year,month,day))
  58. break
  59. else:
  60. print("您输入的日期为%d,超过%d月的最大天数%d天,请您依据提示再次输入" % (day, month, standard_day[month - 1]))
  61.  
  62. # 日期代码输入结束
  63. # 第一段代码块(年月日输入)结束
  64.  
  65. # 第二段代码块(依据输入的年月日判断为该年的第几天)开始
  66.  
  67. print("-------------------------------------------------")
  68.  
  69. # 计算天数变量的初始化
  70. sum_day = 0
  71. # 月的约束条件,
  72. # 当输入是month=1月时,(n=1)<(mont=1)时不成立,1月不计入月数累加
  73. # 当输入是month=2月时,(n=1)<(mont=2)时成立,1月计入月数累加
  74. # 依次类推
  75. n = 1
  76.  
  77. # 循环计算上月及之前月份的累加和(天数)
  78. while n < month:
  79. sum_day += standard_day[n]
  80. n += 1
  81.  
  82. # 计算总天数
  83. sum_day += day
  84.  
  85. # 判断平润年,如果是平年,则直接输出,如果是润年,则使sum_day数值再加1,
  86. if leap == 0:
  87. print("您输入的%d年%d月%d日是该年的第%d天" %(year, month, day, (sum_day+1)))
  88. else:
  89. print("您输入的%d年%d月%d日是该年的第%d天" %(year, month, day, sum_day))
  90. # 第二段代码块(判断该日期是该年的第几天)结束
  91.  
  92. # 第三段代码块(判断该天是星期几)开始
  93. print("-------------------------------------------------")
  94.  
  95. from datetime import datetime
  96. # datetime模块中有delta类,这个类的对象用于表示一个时间间隔,比如两个日期或者时间的差别
  97.  
  98. # 格式化输入时间
  99. get_day = datetime(year,month,day)
  100. # 格式化初始时间1970年1月1日 星期四
  101. standard_day = datetime(1970,1,1)
  102.  
  103. # diff_day = get_day - standard_day 该段代码输出的为 1 days 00:00:00
  104. # 输入日期与起始1970年1月1日 星期四 之间的相差天数diff_day
  105. diff_day = (get_day - standard_day).days #经过修改过后,这样输出就是日期了
  106.  
  107. # 相差天数对7取余数
  108. week_day = diff_day % 7
  109. # week_day 余数加上1970年1月1日当天星期四的天数
  110. week_day += 4
  111. # 两者相加可能会大于7,if判断循环
  112. if week_day >7:
  113. week_day %= 7
  114. print("您输入的%d年%d月%d日是星期%d" %(year, month, day, week_day))
  115. else:
  116. print("您输入的%d年%d月%d日是星期%d" %(year, month, day, week_day))
  117. # 第三段代码块(判断该天是星期几)结束
  118.  
  119. # import sys
  120.  
  121. # 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. super-pow

    // https://discuss.leetcode.com/topic/50489/c-clean-and-short-solution class Solution { ; int powMod ...

  2. Linux,Windows和UNIX的进程调度的分析

    摘要 : 本文以Linux ,Unix ,Windows 操作系统为例,分析其进程调度策略,以期对进程调度过程有更深层次的认识     关键词 : 进程调度 优先级 时间片轮转 实时进程 分时技术   ...

  3. JavaScript字符串数组拼接的性能测试及优化方法

    传统上,字符串连接一直是js中性能最低的操作之一. var text="Hello"; text+=" World!"; 早期浏览器没有对这种运算进行优化.由于 ...

  4. windows10(64位)Anaconda3+Python3.6搭建Tensorflow(cpu版本)及keras

    转自:windows10(64位)Anaconda3+Python3.6搭建Tensorflow(cpu版本)及keras 1.本来电脑安装的是anaconda3 5.3.1,但安装的python版本 ...

  5. 如何将数据转换libsvm格式文件

    原文:http://blog.sina.com.cn/s/blog_5c2f929b0100qse8.html 有三种工具可用1.网上有一个xls文FormatDataLibsvm.xls具有宏命令, ...

  6. SpringApplicationConfiguration 这个不能用 解决方案

    使用的test包的版本号要与spring的一致,避免jar包依赖冲突 直接用注解 @RunWith(SpringRunner.class)@SpringBootTest @SpringApplicat ...

  7. Jquery attr("checked") 返回checked或undefined 获取选中失效

    $('#cb').attr('checked'); 返回的是checked或者是undefined,不是原来的true和false了,有关此问题的解决方法如下: <input type='che ...

  8. 创建线程安全的单例(ARC或 非ARC)

    一:创建 宏 文件 SynthesizeSingleton.h SynthesizeSingleton.h #if __has_feature(objc_arc) // ARC Version #de ...

  9. JavaScript二(第一个js程序)

    一.<script>xxxx</script>标签解析 1.charset :可选,表示通过src属性指定的字符集,由于大多数浏览器忽略它,所以很少有人用它2.defer:可选 ...

  10. PHPstorm自定义快捷键

    Ctrl+alt+S 打开设置 PHPstorm 设置 PHPstorm 主题安装 自定义快捷键设置 ·全屏 F11 ·另外一种全屏alt+F11 Database数据库管理 alt+d Termin ...