蜗牛一步一步爬 发表于 2021-8-26 09:57:39

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

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))

小甲鱼的铁粉 发表于 2021-8-26 10:17:59

elif year % 4 == 0 or year % 100 :
这里错了
修改后为

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 != 0 :
            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 == 0:
    days(month,1)
else:
    days(month,0)

wp231957 发表于 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)

小甲鱼的铁粉 发表于 2021-8-26 10:20:28

小甲鱼的铁粉 发表于 2021-8-26 10:17
这里错了
修改后为

我这个不对,看三楼的吧

wp231957 发表于 2021-8-26 10:22:14

小甲鱼的铁粉 发表于 2021-8-26 10:17
这里错了
修改后为

错是并的关系不是or

蜗牛一步一步爬 发表于 2021-8-26 10:54:42

wp231957 发表于 2021-8-26 10:22
错是并的关系不是or

谢谢,脑子糊涂了。纠结了半天没看出问题。你一语点破{:5_108:}

傻眼貓咪 发表于 2021-9-3 21:53:35

year, month =

def days(y: 'year', m: 'month') -> int:
    a =
    b =
    if m in a: return 31
    elif m in b: return 30
    elif isLeap(y): return 29
    else: return 28

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

print(f"{year}年的{month}月份有{days(year, month)}天")

蜗牛一步一步爬 发表于 2021-9-4 16:24:12

傻眼貓咪 发表于 2021-9-3 21:53


写代码的思路向你学习。{:5_106:}但闰年的判断错了。
y%4==0       -->      y%400==0 or y%4==0 and y%100
页: [1]
查看完整版本: 求教! 为什么运行的结果不对。