Python练习笔记——计算输入日期为改年的第几天、星期几
# 输入年月日,如: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练习笔记——计算输入日期为改年的第几天、星期几的更多相关文章
- 吴裕雄--天生自然python学习笔记:Python3 日期和时间
Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能. Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间. 时间间隔是以秒为单位的浮点小数. ...
- Python练习笔记——计算个人体重指数
输入您的身高 体重 性别 计算出你的体重是否标准 gender = input('请输入您的性别(boy or girl):') height = input('请输入您的身高(单位cm):') he ...
- Python练习笔记——对输入的数字进行加和
请您输入数字,每个数字采用回车结束,当您输入型号*时,则结束数字输入,输出所有数字的总和 def num_sum(): i = 0 while True: get_num = input(" ...
- python练习笔记——计算1/1-1/3+1/5-1/7……的和
1 / 1 - 1 / 3 + 1 / 5 - 1 / 7 + ....求100000个这样的分式计算之为是多少?将此值乘以4后打印出来,看看是什么? num_list = [] count = -1 ...
- python小案例-计算输入两个数的最大公约数与最小公倍数
# 计算最大公约数 def gcd(x,y): """ 计算最大公约数 :param x:一个正整数 :param y:一个正整数 :return:x,y的最大公约数 & ...
- Problem D: 结构体:计算输入日期是该年的第几天
#include <stdio.h> struct time{ int year; int month; int day;}; int main(void) { struct time s ...
- Python中判断是否为闰年,求输入日期是该年第几天
#coding = utf-8 def getLastDay(): y = int(input("Please input year :")) m = int(input(&quo ...
- Python编程从入门到实践笔记——用户输入和while循环
Python编程从入门到实践笔记——用户输入和while循环 #coding=utf-8 #函数input()让程序暂停运行,等待用户输入一些文本.得到用户的输入以后将其存储在一个变量中,方便后续使用 ...
- Python datetime time 等时间 日期 之间的计算和相互转化
from datetime import datetime, date, timedelta, timezone from time import time, ctime, localtime, st ...
随机推荐
- C/C++ 读取16进制文件
1.为什么有这种需求 因为有些情况需要避免出现乱码.不管什么编码都是二进制的,这样表示为16进制就可以啦. 2.如何读取16进制文件 最近编程用这一问题,网上查了一下,感觉还是自己写吧. 16进制数据 ...
- require.js 最佳实践
require.js是一个js库,相关的基础知识,前面转载了两篇博文:Javascript模块化编程(require.js), Javascript模块化工具require.js教程,RequireJ ...
- iOS开发-Quartz2D初识
Quartz2D如果单独的从Quartz,那么会发现Quartz是一个开源的Java作业调度框架,单独从英文翻译的角度来看的话Quartz的英文是石英,如果有的时候不小心搜索会发现手表推荐.本文中介绍 ...
- 30条技巧提高Web程序执行效率
尽量避免使用DOM.当需要反复使用DOM时,先把对DOM的引用存到JavaScript本地变量里再使用.使用设置innerHTML的方法来替换document.createElement/append ...
- 如何实现JS函数的重载
javascript不能支持函数的重载,如下: function f(length) { alert("高为:"+length); } function f(length,widt ...
- Cognos创建Oracle数据源错误以及客户端生成加密信息错误
报加密错误,先删除 signkeypair csk encrytkeypair三个目录错误一: 创建Oracle数据源错误,在cognos connection中创建oracle的数据源,一直测试不成 ...
- [effictive c++] 条款04 确定对象被使用前已被初始化
成员初始化 在c和c++ 中,使用为初始化的类型经常会引发不可预料的错误,从而使得我们要花费巨大的时间用于调试查找问题,所以确定对象被使用前已被初始化是个非常好的习惯. 永远在使用之前对对象进行初始化 ...
- Foreda8上安装Ant1.9.2
Ant在Win上安装很简单,解压拷贝+设置Ant_Home,在Linux上差不多也是这两步. 首先下载apache-ant-1.9.2-bin.tar.gz. 然后解压tar xvzf apache- ...
- 如何设置qt creator的快捷键
如何设置qt creator快捷键 以设置设置edit - select encoding的快捷键为例 1. tools - options - environment - keyborad 2.在搜 ...
- hdu-悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
http://acm.hdu.edu.cn/showproblem.php?pid=2191 Problem Description 急!灾区的食物依然短缺! 为了挽救灾区同胞的生命,心系灾区同胞的你 ...