计算在1901年1月1日至2000年12月31日间共有多少个星期天落在每月的第一天上
最近在MOOC上学习Python,遇到一个日期计算的问题,现在来整理一下↓
题目描述
根据下列信息计算在1901年1月1日至2000年12月31日间共有多少个星期天落在每月的第一天上?
a)1900.1.1是星期一
b)1月,3月,5月,7月,8月,10月和12月是31天
c)4月,6月,9月和11月是30天
d)2月是28天,在闰年是29天
e)公元年数能被4整除且又不能被100整除是闰年
f)能直接被400整除也是闰年
输出格式
一个正整数
题目分析
- 第一种方法就是用if语句判断相关条件进行计算。
- 第二种方法比较简洁,即使用python中的calendar模块。调用monthcalendar函数,返回某个月以每一周为元素的序列。之后获得第一个元素(即第一周的日期排布),判断第1天出现的位置是否为6,即可判断每月第1天是否为星期天。
- 以2017年7月为例,该月日期分布如下图所示:
- 该月以每一周为元素的序列如下:[[0, 0, 0, 0, 0, 1, 2], [3, 4, 5, 6, 7, 8, 9], [10, 11, 12, 13, 14, 15, 16], [17, 18, 19, 20, 21, 22, 23], [24, 25, 26, 27, 28, 29, 30], [31, 0, 0, 0, 0, 0, 0]]。根据上面方法进行判断,该月第一周是[0, 0, 0, 0, 0, 1, 2],1所在的位置是5而不是6(注意,从0开始计数),即落在星期六而非星期天,因此该月的第一天就不是星期天。
题目代码
方法1:
daySum=1
count=0
for year in range(1900,2001):for month in range(1,13):if month==1 or month==3 or month==5 or month==7 or month==8 or month==10 or month==12:day=31elif month==4 or month==6 or month==9 or month==11:day=30elif month==2:if(year%400==0)or(year%4==0 and year%100==0):day=29else:day=28daySum+=dayif daySum%7==0 and year>1900:count+=1
print count
方法2:
import calendar
count=0
for year in xrange(1901,2001):for month in xrange(1,13):if calendar.monthcalendar(year,month)[0].index(1) == 6:count+=1
print count
相关参考
http://www.cnblogs.com/hongten/archive/2013/08/07/hongten_python_calendar.html
计算在1901年1月1日至2000年12月31日间共有多少个星期天落在每月的第一天上相关推荐
- Python 计算在1901年1月1日至2000年12月31日间共有多少个星期天落在每月的第一天上
题目内容: 根据下列信息计算在1901年1月1日至2000年12月31日间共有多少个星期天落在每月的第一天上? a) 1900.1.1是星期一 b) 1月,3月,5月,7月,8月,10月和12月是31 ...
- 【练习题】根据下列信息计算在1901年1月1日至2000年12月31日间共有多少个星期天落在每月的第一天上?
题目内容: 根据下列信息计算在1901年1月1日至2000年12月31日间共有多少个星期天落在每月的第一天上? a) 1900.1.1是星期一 b) 1月,3月,5月,7月,8月,10月和1 ...
- python输出一年有多少天多少时分秒_python:计算在1901年1月1日至2000年12月31日间共有多少个星期天落在每月的第一天上...
# -*- coding: UTF-8 -*- """ Created on 2017/4/2 @author: cat """ impor ...
- 根据下列信息计算在1901年1月1日至2000年12月31日间共有多少个星期天落在每月的第一天上?
-- coding: utf-8 -- """ Created on Sun Sep 06 08:51:53 2015 @author: MONKEY 根据下列信息计算在 ...
- python:计算在1901年1月1日至2000年12月31日间共有多少个星期天落在每月的第一天上
根据下列信息计算在1901年1月1日至2000年12月31日间共有多少个星期天落在每月的第一天上? a) 1900.1.1是星期一 b) 1月,3月,5月,7月,8月,10月和12月是31天 c) 4 ...
- python计算某天距元旦的天数_Python:根据下列信息计算在1901年1月1日至2000年12月31日间共有多少个星期天落在每月的第一天上?...
具体要求:a)1900.1.1是星期一b)1月,3月,5月,7月,8月,10月和12月是31天c)4月,6月,9月和11月是30天d)2月是28天,在闰年是29天e)公元年数能被4整除且又不能被100 ...
- 2014年11月3日至2014年12月29日
2014年11月3日 1.在MyEclipse中运行写好的MapReducer,抛出: 2014-11-0310:59:24,729 WARN [main] util.NativeCodeLoader ...
- 零界之痕30号服务器维护,零界之痕12月9日更新了什么 12月9日更新维护公告介绍...
零界之痕官方宣布将会在今天的凌晨到3点进行停服更新维护维护时间长达三个小时,在维护的过程中可能会时间延长,也有可能提前结束,具体要也开服时间为准,并且在结束后官方会对玩家做出一定的补偿,拿到200的虚 ...
- 魔兽世界服务器维护12月13日,消息称国服12月13日更新4.3版本
12月1日消息,在美服.台服等服务器开放4.3版本--暮光审判之后,国服传来了开放4.3的消息. 178总裁微博爆料 178游戏网总裁张云帆先生刚刚在微博爆料,国服将在12月13日开放,并希望5.0可 ...
- 2021年总结(2021年1月1日至2021年12月26日)
前言 时间飞快,转眼就到了年底,2021年就这么过去了,今年也是正式工作的第一年,记得好像是2020年7月13号进的公司,进入社会,9月7号转正,正式成为一名公司员工,到现在2021年12月26号大概 ...
最新文章
- 那些藏在你键盘里的emoji,背后到底有着怎样的故事?
- error: ‘CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD’ was not declared in this scope
- 【LeetCode-SQL每日一练】—— 196. 删除重复的电子邮箱
- python元组元素抓7_Python3基础 tuple 通过拆分元组向元组中加入新的元素
- OpenCV案例(三): 玉米颗粒计数
- Redis详解(五)——Redis多实例
- Atitit 信息安全常见基础技术 目录 1. 加密	1 2. 签名(防篡改)	1 2.1. 第4章 标识与认证技术 	1 2.2. 第5章 授权与访问控制技术 	1 2.3. 第9章 安全审计与责
- ajax请求resource文件Access to XMLHttpRequest at 'file:'
- 【网络文摘】程序人生:我们工作到底为了什么
- windows10强制删除文件_Windows10 初装必设置
- #EDA(电子设计自动化)
- 新手如何玩转拼多多?需要注意什么?
- mybatis中的动态sql
- 飞秋只能发文件不能接收文件的解决办法
- Python获取二维数组的行列数
- 均值滤波及中值滤波的区别
- https请求连接超时
- 经典网络架构学习-ResNet
- Java生鲜电商平台-订单架构实战
- PHP---保留小数并且(不)四舍五入