鱼C论坛

 找回密码
 立即注册
查看: 2330|回复: 9

[已解决]输入某年某月某日,判断这一天是这一年的第几天?

[复制链接]
发表于 2019-12-10 21:01:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
实例(Python 2.0+)
#!/usr/bin/python
# -*- coding: UTF-8 -*-

year = int(raw_input('year:\n'))
month = int(raw_input('month:\n'))
day = int(raw_input('day:\n'))

months = (0,31,59,90,120,151,181,212,243,273,304,334)
if 0 < month <= 12:
    sum = months[month - 1]
else:
    print 'data error'
sum += day
leap = 0
if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):
    leap = 1
if (leap == 1) and (month > 2):
    sum += 1
print 'it is the %dth day.' % sum

------------
这个题目也有个问题,就是在输入月份之后输入日期时,倘若日期不对,也得报错,但我想了一顿也不知应该如何写?求高手指教。
最佳答案
2019-12-10 21:50:23
修改一个:
  1. months = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
  2. months_leap = (31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
  3. while True:
  4.      year = int(input('year:\n'))
  5.      if 0 < year < 9999:
  6.           break
  7.      else:
  8.           print('year error.')
  9. while True:
  10.      month = int(input('month:\n'))
  11.      if 0 < month < 13:
  12.           break
  13.      else:
  14.           print('month error.')
  15. if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):
  16.      leap = 1
  17. else:
  18.      leap = 0
  19. while True:
  20.      day = int(input('day:\n'))
  21.      if leap:
  22.           if 0 < month <= months_leap[month - 1]:
  23.                break
  24.      else:
  25.           if 0 < month <= months[month - 1]:
  26.                break
  27.      print('day error.')
  28. if leap:
  29.      days = sum(months_leap[:month - 1]) + day
  30. else:
  31.      days = sum(months[:month - 1]) + day
  32. print ('it is the %dth day.' % days)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-12-10 21:03:09 | 显示全部楼层
不玩 Python 2.x。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-10 21:16:31 | 显示全部楼层



year = int(input('year:\n'))
month = int(input('month:\n'))
day = int(input('day:\n'))

months = (0,31,59,90,120,151,181,212,243,273,304,334)
if 0 < month <= 12:
    sum = months[month - 1]
else:
    print( 'data error')
sum += day
leap = 0
if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):
    leap = 1
if (leap == 1) and (month > 2):
    sum += 1
print ('it is the %dth day.' % sum)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-10 21:19:39 | 显示全部楼层
给您改成3了。请指教。另:您的每日一题中鱼友“冬雪雪冬”给的答案里“str2 += f'{char}{count}'”是啥意思?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-10 21:20:42 | 显示全部楼层

俺就是在研究Python100例,但菜鸟教程上确实用的是2.0,俺 也觉着别扭。求大神指导。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-10 21:50:23 | 显示全部楼层    本楼为最佳答案   
修改一个:
  1. months = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
  2. months_leap = (31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
  3. while True:
  4.      year = int(input('year:\n'))
  5.      if 0 < year < 9999:
  6.           break
  7.      else:
  8.           print('year error.')
  9. while True:
  10.      month = int(input('month:\n'))
  11.      if 0 < month < 13:
  12.           break
  13.      else:
  14.           print('month error.')
  15. if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):
  16.      leap = 1
  17. else:
  18.      leap = 0
  19. while True:
  20.      day = int(input('day:\n'))
  21.      if leap:
  22.           if 0 < month <= months_leap[month - 1]:
  23.                break
  24.      else:
  25.           if 0 < month <= months[month - 1]:
  26.                break
  27.      print('day error.')
  28. if leap:
  29.      days = sum(months_leap[:month - 1]) + day
  30. else:
  31.      days = sum(months[:month - 1]) + day
  32. print ('it is the %dth day.' % days)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-10 21:52:40 | 显示全部楼层
c870801 发表于 2019-12-10 21:19
给您改成3了。请指教。另:您的每日一题中鱼友“冬雪雪冬”给的答案里“str2 += f'{char}{count}'”是啥意 ...

这是python3.6新增的f字符串f-String
f'{char}-{count}'相当于
'%s-%s'%(char, count)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-10 22:28:50 | 显示全部楼层
冬雪雪冬 发表于 2019-12-10 21:52
这是python3.6新增的f字符串f-String
f'{char}-{count}'相当于
'%s-%s'%(char, count)

多谢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-11 17:41:30 | 显示全部楼层

只是第22行和25行的month应改为day。
再问一句,怎么出来这种带序号并可以复制代码的回答样式呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-11 20:27:35 | 显示全部楼层
c870801 发表于 2019-12-11 17:41
只是第22行和25行的month应改为day。
再问一句,怎么出来这种带序号并可以复制代码的回答样式呢?

发帖或回帖时注意文字上面有一个<>的图标,将程序放到弹出的窗口中。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-19 13:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表