ITPub博客

首页 > 应用开发 > IT综合 > 使用Python计算月末星期几的三种方法-第1种

使用Python计算月末星期几的三种方法-第1种

原创 IT综合 作者:dbSeeSee 时间:2016-12-15 23:10:48 0 删除 编辑
代码如下,具体方法在注释里面

  1. '''
  2. 需求:已知1900.1.1是星期一,对于一个给定的年份和月份,输出这个月的最后一天是星期几
  3. '''

  4. import calendar as cal
  5. import datetime as dt


  6. #方法1,定义第1个函数
  7. #使用原始的方法,来计算出总的天数,不使用日期和日历模块计算天数
  8. #以1900年1月1日为起点,
  9. # 首先:计算输入的年份和1900之间的闰年和平年的数量,从而计算是中间的年的总天数
  10. # 其次:计算输入的月份从当年第1天到本月最后一天的总天数
  11. # 以上二者之和即是1900年1月1日到输入的年月的最后一天的总天数
  12. # # 根据总天数的差值除以7的余数来判断星期几

  13. def getWeekday1( ):

  14.     year = int(raw_input('输入年份 : >= 1900 年 '))
  15.     month = int(raw_input('输入月份 : 1-12 '))

  16.     #定义闰年数量的变量
  17.     r_num = 0
  18.     #定义平年的数量的变量
  19.     p_num = 0

  20.     #计算闰年和平年的总天数
  21.     #思路:1900到当前年之间只有平年和闰年两种
  22.     #我们先判断闰年,如果是的话 +1,否则就是平年+1

  23.     for i in range(1900, year):
  24.         if i % 4 == 0 and (i % 100 != 0 or i % 400 == 0):
  25.             r_num = r_num + 1
  26.         else:
  27.             p_num = p_num + 1

  28.     #计算闰年和平年的总天数
  29.     year_days = r_num * 366 + p_num * 365
  30.     #print '年的天数: ', year_days

  31.     #计算输入的本年月份的总天数
  32.     #定义一个平年的每个月天数的元组,计算月份的天数的和
  33.     dic2 = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
  34.     i = 1
  35.     while i <= len(dic2):
  36.         i = i + 1
  37.         month_days = sum(dic2[0 : month])

  38.     #计算总天数=所有年的总天数+本年月份的总天数
  39.     #上面计算本年月份的总天数时,还没考虑闰年,
  40.     #下面判断下当年年份是否闰年以及输入的月份是否大于等于2
  41.     #是的话 总天数+1
  42.     if year % 4 == 0 \
  43.             and (year % 100 != 0 or year % 400 == 0) \
  44.             and month >= 2:
  45.         total_days = month_days + year_days + 1
  46.     else:
  47.         total_days = month_days + year_days

  48.     #最后根据总天数来除以7的余数 以1900年1月1号星期一为基准,来判断星期几

  49.     week_dic1 = {
  50.         1: '星期一',
  51.         2: '星期二',
  52.         3: '星期三',
  53.         4: '星期四',
  54.         5: '星期五',
  55.         6: '星期六',
  56.         0: '星期天'
  57.     }

  58.     format1 = "%d-%d"
  59.     dcha = total_days % 7
  60.     #print format1 % (year, month,), '月最后一天星期是', dcha, '对应', week_dic1.get(dcha)
  61.     print year, '年', month, "月 的最后1天 星期是:", dcha, week_dic1.get(dcha),'\n'


  62. print '使用方法1 计算'
  63. getWeekday1( )



运行代码,



  1. 使用方法1 计算
  2. 输入年份 : >= 1900 年 2016
  3. 输入月份 : 1-12 12
  4. 2016 年 12 月 的最后1天 星期是: 6 星期六




来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29023300/viewspace-2130738/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-07-04

  • 博文量
    28
  • 访问量
    96186