Crossin的编程教室

标题: 题目:输入某年某月某日,判断这一天是这一年的第几天? [打印本页]

作者: fangweiren    时间: 2016-2-6 14:51
标题: 题目:输入某年某月某日,判断这一天是这一年的第几天?
@cross先生

下面程序中“if 0 <= month <= 12:”应该不对吧,0应该不包含,对吧

程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊       情况,闰年且输入月份大于3时需考虑多加一天:
程序源代码:
  1. #!/usr/bin/python
  2. # -*- coding: UTF-8 -*-

  3. year = int(raw_input('year:\n'))
  4. month = int(raw_input('month:\n'))
  5. day = int(raw_input('day:\n'))

  6. months = (0,31,59,90,120,151,181,212,243,273,304,334)
  7. if 0 <= month <= 12:
  8.     sum = months[month - 1]
  9. else:
  10.     print 'data error'
  11. sum += day
  12. leap = 0
  13. if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):
  14.     leap = 1
  15. if (leap == 1) and (month > 2):
  16.     sum += 1
  17. print 'it is the %dth day.' % sum
复制代码
这里的python100题挺不错的
http://www.2cto.com/kf/web/python/sl/



作者: crossin先生    时间: 2016-2-7 15:45
是的
作者: ly_911004    时间: 2016-3-14 16:01
  1. import time,datetime
  2. # 2016-03-14
  3. months = (1,3,5,7,8,10,12)
  4. date = raw_input('请输入要查询的日期("最好以'+'"-"'+'分割"):')
  5. stime = time.time()
  6. datetime1 = datetime.datetime.strptime(date,'%Y-%m-%d')
  7. try:
  8.     year = datetime1.year
  9.     month = datetime1.month
  10.     day = datetime1.day
  11.     if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
  12.         print 'the day is %d 天'%(months.index(month) * 31 + (month > 2 and 29 + (month - months.index(month) - 2) * 30 or 0) + day)
  13.         etime = time.time()
  14.         print '代码处理用时:%f'%(etime-stime)
  15.     else:
  16.         print 'the day is %d 天'%(months.index(month) * 31 + (month > 2 and 28 + (month - months.index(month) - 2) * 30 or 0) + day)
  17.         etime = time.time()
  18.         print '代码处理用时:%f' %(etime-stime)
  19. except:
  20.     print '请按照正确的时间格式输入'
复制代码

作者: ly_911004    时间: 2016-3-14 16:03
总感觉我的哪儿不对
作者: crossin先生    时间: 2016-3-14 21:41
ly_911004 发表于 2016-3-14 16:03
总感觉我的哪儿不对

测试跑一下就知道对不对了




欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5