学习小组 发表于 2017-5-22 10:10:37

判断是否是闰年,这样写是否正确

a = int(input('请输入年份:'))
if (a%4==0) and (a%100!=0) or (a%400==0):
    print ('yes,是闰年')
else:
    print ('no,不是闰年')

Seven007 发表于 2017-5-22 10:22:48

公历闰年判定遵循的规律为: 四年一闰,百年不闰,四百年再闰.
公历闰年的简单计算方法(符合以下条件之一的年份即为闰年,反之则是平年)
1.能被4整除而不能被100整除。
2.能被100整除也能被400整除。
所以100不是闰年是正确的

21度深蓝梦境 发表于 2017-5-22 12:59:36

对的这个案例中的字符从高到低的优先级顺序是:%,==,and,or
所以跟分开没区别

Messj 发表于 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),即四年且不为百年一闰,或者四百年一闰。

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

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

對天狂咲 发表于 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);   

Python_meng 发表于 2017-5-23 17:38:23

加个括号会比较好,(A   andB )or   C,逻辑上应该是对的

不二如是 发表于 2017-5-25 21:30:56

year = int(input("输入一个年份: "))
if (year % 4) == 0:
   if (year % 100) == 0:
       if (year % 400) == 0:
         print("{0} 是闰年".format(year))   # 整百年能被400整除的是闰年
       else:
         print("{0} 不是闰年".format(year))
   else:
       print("{0} 是闰年".format(year))       # 非整百年能被4整除的为闰年
else:
   print("{0} 不是闰年".format(year))
页: [1]
查看完整版本: 判断是否是闰年,这样写是否正确