鱼C论坛

 找回密码
 立即注册
查看: 4347|回复: 6

[已解决]判断是否是闰年,这样写是否正确

[复制链接]
发表于 2017-5-22 10:10:37 | 显示全部楼层 |阅读模式

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

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

x
a = int(input('请输入年份:'))
if (a%4==0) and (a%100!=0) or (a%400==0):
    print ('yes,是闰年')
else:
    print ('no,不是闰年')
最佳答案
2017-5-22 15:04:39
首先,你的程序计算结果没有问题。其次,说下程序背后的算法。

闰年规律:四年一闰,百年不闰,四百年再闰
则得出判断条件前提为四年一闰,在此基础上要求百年不闰并提出额外要求四百年一闰,即
if ((a%4==0) and (a%100!=0) )or((a%4==0) and  (a%400==0))。当对a%400==0判断时,其实已经对a%4==0进行判断。故可以省略a%4==0,由此得到:
你的程序的判断条件为:if (a%4==0) and (a%100!=0) or (a%400==0),即四年且不为百年一闰,或者四百年一闰。

因此,你的这个判断条件十分简洁。不过,这种长语句判断最好加上括号,一来方便阅读,二来可避免失误。

最后,如果觉得我的回答不错,麻烦设为最佳答案。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-5-22 10:22:48 | 显示全部楼层
公历闰年判定遵循的规律为: 四年一闰,百年不闰,四百年再闰.
公历闰年的简单计算方法(符合以下条件之一的年份即为闰年,反之则是平年)
1.能被4整除而不能被100整除。
2.能被100整除也能被400整除。
所以100不是闰年是正确的

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

使用道具 举报

发表于 2017-5-22 12:59:36 | 显示全部楼层
对的  这个案例中的字符从高到低的优先级顺序是:%,==,and,or
所以  跟分开没区别
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-22 15:04:39 | 显示全部楼层    本楼为最佳答案   
首先,你的程序计算结果没有问题。其次,说下程序背后的算法。

闰年规律:四年一闰,百年不闰,四百年再闰
则得出判断条件前提为四年一闰,在此基础上要求百年不闰并提出额外要求四百年一闰,即
if ((a%4==0) and (a%100!=0) )or((a%4==0) and  (a%400==0))。当对a%400==0判断时,其实已经对a%4==0进行判断。故可以省略a%4==0,由此得到:
你的程序的判断条件为:if (a%4==0) and (a%100!=0) or (a%400==0),即四年且不为百年一闰,或者四百年一闰。

因此,你的这个判断条件十分简洁。不过,这种长语句判断最好加上括号,一来方便阅读,二来可避免失误。

最后,如果觉得我的回答不错,麻烦设为最佳答案。

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

使用道具 举报

发表于 2017-5-22 17:24:58 | 显示全部楼层
scanf("%d",&a);
if(a%4==0&&a%100!=0)
printf("%d  是闰年",a);
else if(a%400==0)
  printf("%d  是闰年",a);  
   
else
printf("%d  不是闰年",a);   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-23 17:38:23 | 显示全部楼层
加个括号会比较好,(A   and  B )or   C,逻辑上应该是对的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-25 21:30:56 | 显示全部楼层
  1. year = int(input("输入一个年份: "))
  2. if (year % 4) == 0:
  3.    if (year % 100) == 0:
  4.        if (year % 400) == 0:
  5.            print("{0} 是闰年".format(year))   # 整百年能被400整除的是闰年
  6.        else:
  7.            print("{0} 不是闰年".format(year))
  8.    else:
  9.        print("{0} 是闰年".format(year))       # 非整百年能被4整除的为闰年
  10. else:
  11.    print("{0} 不是闰年".format(year))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 03:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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