题目描述
输入年份和月份,输出这一年的这一月有多少天。需要考虑闰年。
输入格式
输入两个正整数,分别表示年份 y 和月数 m,以空格隔开。
输出格式
输出一行一个正整数,表示这个月有多少天。
题目很简单,但是这里面有很多需要我们注意的地方所以,我在此要提高这道提的难度,话不多说,代码如下:
y,m=map(int,input().split())
if y%4==0:
if y%100==0:
if y%400==0:
if m==2 :
print(29)
elif m==1 or m==3 or m==5 or m==7 or m==8 or m==10 or m==12:
print(31)
else:
print(30)
else:
if m==2 :
print(28)
elif m==1 or m==3 or m==5or m==7 or m==8 or m==10 or m==12:
print(31)
else:
print(30)
else:
if m==2 :
print(29)
elif m==1 or m==3 or m==5or m==7 or m==8 or m==10 or m==12:
print(31)
else:
print(30)
else:
if m==2:
print(28)
elif m ==1 or m ==3 or m ==5 or m ==7 or m ==8 or m ==10 or m ==12:
print(31)
else:
print(30)
这是先判断年份再判断月份的代码,这里面还融入了闰年的判断,所以我们要多方位思考这个问题,还有一点要补充的:
if m==2 :
print(28)
if m==1 or m==3 or m==5or m==7 or m==8 or m==10 or m==12:
print(31)
else:
print(30)
如果月份的判断我们这样写的话不论你输出的m的值等于几最终结果都会有30这个值,为什么呢?在使用分支语句的时候如果都用if语句那么每个if语句都会被判断是否符合条件,若符合条件每个if语句都会被使用,如果使用if和elif语句那么就会两者判断条件,只要符合条件那么另一个条件就必然不会输出结果,而else语句在都是if的语句里只要两个条件有一个不满足就会输出else的语句,而if elif语句必须都不满足才会执行else语句,不知道这样我又没有讲清楚这个需要注意的地方。
而另一种通过判断月份再判断年份的代码就比上述先判断年份再判断月份的要简单,因为这个只需要判断2月份的不同情况就行,而上述那个要先判断是否是闰年然后再判断是几月,话不啰嗦,代码如下:
y,m=map(int,input().split())
if m==2:
if y%4==0:
if y%100==0:
if y%400==0:
print(29)
else:
print(28)
else:
print(29)
elif m ==1 or m ==3 or m ==5 or m ==7 or m ==8 or m ==10 or m ==12:
print(31)
else:
print(30)
很明显下面这个比较简单些,谢谢您的观看希望对您能有帮助!