再战万年历

作者: Jerome_vae | 来源:发表于2017-05-25 20:36 被阅读34次

这本来是一个悲剧的故事,昨天想了很久都无法实现,仅仅判断个平闰年和月份就已经错误百出,今年参考了Snow__同学的万年历文章,总算是慢慢能够消化下来。
巨赞无比的思路,特别合适我这种小白


  • 首先判断年份是否为平闰年
  • 判断月份的天数
  • 根据平闰年和月份的天数计算某年某月距离1990有多少平闰年,某月有多少天

程序如下:

# Insure whether Year is Leap year
def is_leap_year(year):
           if(year%4 == 0 and year%100 != 0) or year % 400 == 0:
                      return True
           else:
                      return False

# Calculate how many days in the month
def get_month_day(year, month):
           days = 31
           if month == 2:
                      days = 29 if is_leap_year(year) else 28
           elif month in [4, 6, 9, 11]:
                      days = 30
           return days

# Calculate how many days before
def get_today(year, month):
           total = 0
           for i in range(1990, year):
                      if is_leap_year(year):
                                 total += 366
                      else:
                                 total += 365
           for i in range(1, month):
                      total += get_month_day(year, i)
           return total

if __name__ == '__main__':

           while True:
                      year = input('请输入年份(如:1990):')
                      month = input('请输入月份(如:1):')
                      try:
                                 year = int(year)
                                 month = int(month)
                                 if month < 1 or month > 12:
                                            print('年份或月份输入错误,请重新输入')
                                            continue
                      except:
                                 print('年份或月份输入错误,请重新输入')
                                 continue
                      break

           print('日\t一\t二\t三\t四\t五\t六')
           count = 0
           for i in range((get_today(year, month) % 7) + 1):
                      print('\t', end = '')
                      count += 1
           for i in range(1, get_month_day(year, month) + 1):
                      print(i, end = '')
                      print('\t', end = '')
                      count += 1
                      if count %7 == 0:
                                 print('\n')

很清爽的思路风格相比我自己之前的半成品而言,泥石流是什么就显而易见了。

Practice makes perfect
一起好好学习呀

相关文章

  • 再战万年历

    这本来是一个悲剧的故事,昨天想了很久都无法实现,仅仅判断个平闰年和月份就已经错误百出,今年参考了Snow__同学的...

  • 再战

    灯下战稿,睡意朦胧; 提笔写稿,写得手中累; 没日没夜,身心疲惫; 写之又改,改得心中烦。 战得辛苦,但我不在乎;...

  • 再战

    上半年报名了4级,因为疫情原因被取消了,昨天辅导员通知,12月的又可以开始报名参考了,不出意外的话上半年报名的这次...

  • 再战

    坚持了17天日更又断了,从今天开始再战。 想想断更的原因,白天托辞忙不更文,晚上回到家又忙着照顾小不点,一般得等他...

  • 再战

    明天又是一场硬战了,第三轮全员核酸,要求我们六点必须到达点位,这半个月下来,像这样的采核酸,不断的采核酸,同事们都...

  • 2018-12-21

    来年再战

  • 再战小宝

    今天爸爸下班早,去晚托班接儿子,两孩子还在写作业,估计爸爸等了很久,直到平时的回家时间才到家。小宝还剩半张数学卷,...

  • 再战江湖

    有人追求范冰冰,有人喜欢崔永元;有人希望成为政治家,有人梦想变成富人;有人一半天使一半魔鬼,有人自认只是一种...

  • 再战Shiro

    最近作者被安排的活是给一个系统添加权限接入到已有的用户管理中心去。作者在之前写过一篇Shiro日记,介绍了Shir...

  • 明年再战

    不看书,态度不摆正,考试肯定不通过。明年准备充分再战

网友评论

    本文标题:再战万年历

    本文链接:https://www.haomeiwen.com/subject/xxwzxxtx.html