最近在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日间共有多少个星期天落在每月的第一天上相关推荐

  1. 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 ...

  2. 【练习题】根据下列信息计算在1901年1月1日至2000年12月31日间共有多少个星期天落在每月的第一天上?

     题目内容: 根据下列信息计算在1901年1月1日至2000年12月31日间共有多少个星期天落在每月的第一天上? a)  1900.1.1是星期一 b)  1月,3月,5月,7月,8月,10月和1 ...

  3. python输出一年有多少天多少时分秒_python:计算在1901年1月1日至2000年12月31日间共有多少个星期天落在每月的第一天上...

    # -*- coding: UTF-8 -*- """ Created on 2017/4/2 @author: cat """ impor ...

  4. 根据下列信息计算在1901年1月1日至2000年12月31日间共有多少个星期天落在每月的第一天上?

    -- coding: utf-8 -- """ Created on Sun Sep 06 08:51:53 2015 @author: MONKEY 根据下列信息计算在 ...

  5. 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 ...

  6. 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 ...

  7. 2014年11月3日至2014年12月29日

    2014年11月3日 1.在MyEclipse中运行写好的MapReducer,抛出: 2014-11-0310:59:24,729 WARN [main] util.NativeCodeLoader ...

  8. 零界之痕30号服务器维护,零界之痕12月9日更新了什么 12月9日更新维护公告介绍...

    零界之痕官方宣布将会在今天的凌晨到3点进行停服更新维护维护时间长达三个小时,在维护的过程中可能会时间延长,也有可能提前结束,具体要也开服时间为准,并且在结束后官方会对玩家做出一定的补偿,拿到200的虚 ...

  9. 魔兽世界服务器维护12月13日,消息称国服12月13日更新4.3版本

    12月1日消息,在美服.台服等服务器开放4.3版本--暮光审判之后,国服传来了开放4.3的消息. 178总裁微博爆料 178游戏网总裁张云帆先生刚刚在微博爆料,国服将在12月13日开放,并希望5.0可 ...

  10. 2021年总结(2021年1月1日至2021年12月26日)

    前言 时间飞快,转眼就到了年底,2021年就这么过去了,今年也是正式工作的第一年,记得好像是2020年7月13号进的公司,进入社会,9月7号转正,正式成为一名公司员工,到现在2021年12月26号大概 ...

最新文章

  1. 那些藏在你键盘里的emoji,背后到底有着怎样的故事?
  2. error: ‘CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD’ was not declared in this scope
  3. 【LeetCode-SQL每日一练】—— 196. 删除重复的电子邮箱
  4. python元组元素抓7_Python3基础 tuple 通过拆分元组向元组中加入新的元素
  5. OpenCV案例(三): 玉米颗粒计数
  6. Redis详解(五)——Redis多实例
  7. Atitit 信息安全常见基础技术 目录 1. 加密 1 2. 签名(防篡改) 1 2.1. 第4章 标识与认证技术  1 2.2. 第5章 授权与访问控制技术  1 2.3. 第9章 安全审计与责
  8. ajax请求resource文件Access to XMLHttpRequest at 'file:'
  9. 【网络文摘】程序人生:我们工作到底为了什么
  10. windows10强制删除文件_Windows10 初装必设置
  11. #EDA(电子设计自动化)
  12. 新手如何玩转拼多多?需要注意什么?
  13. mybatis中的动态sql
  14. 飞秋只能发文件不能接收文件的解决办法
  15. Python获取二维数组的行列数
  16. 均值滤波及中值滤波的区别
  17. https请求连接超时
  18. 经典网络架构学习-ResNet
  19. Java生鲜电商平台-订单架构实战
  20. PHP---保留小数并且(不)四舍五入

热门文章

  1. linux ps 简书,Linux小白学习法宝-命令大全第一部分
  2. python下一代工作流引擎_几大工作流引擎对比
  3. JDK源码解析之HashSet
  4. STM32 触摸屏触摸功能
  5. window.onload=function()是什么意思
  6. 程序员5大热门发展行业,就业迷茫的同学注意啦!
  7. 在计算机里打折的符号是哪个,计算器中的符号
  8. MySQL联合主键保存_mysql联合主键
  9. 实名认证失败_身份证在国政通进行实名认证失败怎么办?
  10. 搭建 Spring Cloud Alibaba 微服务框架