鱼C论坛

 找回密码
 立即注册
查看: 1190|回复: 7

求教! 为什么运行的结果不对。

[复制链接]
发表于 2021-8-26 09:57:39 | 显示全部楼层 |阅读模式

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

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

x
year,month = map(int,input('请输入年份和月份(以空格隔开):').split())

def days(m,f):
    if m == 4 or m == 6 or m == 9 or m == 11 :
        print("%d年的%d月份有30天。" % (year,month))
    elif m == 2:
        if f :
            print("%d年的%d月份有29天。" % (year,month))
        else:
            print("%d年的%d月份有28天。" % (year,month))
    else:
        print("%d年的%d月份有31天。" % (year,month))


if year % 400 == 0:
    days(month,1)
elif year % 4 == 0 or year % 100 :
    days(month,1)
else:
    days(month,0)
---------------------------------------------------------------------
以上运行后 输入2021 2 ,输出结果是:2021年的2月份有29天。
应该是28的。
为什么没有运行到        else:
            print("%d年的%d月份有28天。" % (year,month))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-26 10:17:59 | 显示全部楼层
  1. elif year % 4 == 0 or year % 100 :
复制代码

这里错了
修改后为

  1. year,month = map(int,input('请输入年份和月份(以空格隔开):').split())

  2. def days(m,f):
  3.     if m == 4 or m == 6 or m == 9 or m == 11 :
  4.         print("%d年的%d月份有30天。" % (year,month))
  5.     elif m == 2:
  6.         if f != 0 :
  7.             print("%d年的%d月份有29天。" % (year,month))
  8.         else:
  9.             print("%d年的%d月份有28天。" % (year,month))
  10.     else:
  11.         print("%d年的%d月份有31天。" % (year,month))


  12. if year % 400 == 0:
  13.     days(month,1)
  14. elif year % 4 == 0 or year % 100 == 0:
  15.     days(month,1)
  16. else:
  17.     days(month,0)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-26 10:19:48 | 显示全部楼层
if year % 400 == 0:
    days(month,1)
elif year % 4 == 0 and year % 100 :
    days(month,1)
else:
    days(month,0)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-8-26 10:20:28 | 显示全部楼层


我这个不对,看三楼的吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-8-26 10:22:14 | 显示全部楼层

错  是并的关系  不是or
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-8-26 10:54:42 | 显示全部楼层
wp231957 发表于 2021-8-26 10:22
错  是并的关系  不是or

谢谢,脑子糊涂了。纠结了半天没看出问题。你一语点破
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-3 21:53:35 | 显示全部楼层
  1. year, month = [int(i) for i in input('請輸入年份和月份(以空格隔開):\n').split()]

  2. def days(y: 'year', m: 'month') -> int:
  3.     a = [1, 3, 5, 7, 8, 10, 12]
  4.     b = [4, 6, 9, 11]
  5.     if m in a: return 31
  6.     elif m in b: return 30
  7.     elif isLeap(y): return 29
  8.     else: return 28

  9. def isLeap(y: 'year') -> bool:
  10.     return y%4 == 0

  11. print(f"{year}年的{month}月份有{days(year, month)}天")
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-9-4 16:24:12 | 显示全部楼层

写代码的思路向你学习。但闰年的判断错了。
y%4==0       -->      y%400==0 or y%4==0 and y%100
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-24 16:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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