判断是否是闰年,这样写是否正确
a = int(input('请输入年份:'))if (a%4==0) and (a%100!=0) or (a%400==0):
print ('yes,是闰年')
else:
print ('no,不是闰年')
公历闰年判定遵循的规律为: 四年一闰,百年不闰,四百年再闰.
公历闰年的简单计算方法(符合以下条件之一的年份即为闰年,反之则是平年)
1.能被4整除而不能被100整除。
2.能被100整除也能被400整除。
所以100不是闰年是正确的
对的这个案例中的字符从高到低的优先级顺序是:%,==,and,or
所以跟分开没区别 首先,你的程序计算结果没有问题。其次,说下程序背后的算法。
闰年规律:四年一闰,百年不闰,四百年再闰
则得出判断条件前提为四年一闰,在此基础上要求百年不闰并提出额外要求四百年一闰,即
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),即四年且不为百年一闰,或者四百年一闰。
因此,你的这个判断条件十分简洁。不过,这种长语句判断最好加上括号,一来方便阅读,二来可避免失误。
最后,如果觉得我的回答不错,麻烦设为最佳答案。
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);
加个括号会比较好,(A andB )or C,逻辑上应该是对的 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]