|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
课后题5中的一个作业:
1. 写一个程序,判断给定年份是否为闰年。
这样定义闰年的:能被4整除但不能被100整除,或者能被400整除都是闰年。
我已经写出了判断公元后年份的程序
- year = input('请输入一个年份:')
- if year.isdigit():
- y = int(year)
- if y%400 == 0:
- print(year+'是闰年')
- else:
- if y%4 == 0 and y%100 != 0:
- print(year+'是闰年')
- else:
- print(year+'是平年')
- else:
- print('输入不合法,请重新输入:')
- '''
- 这个脚本只能计算公元后的年份,公元前的就不可以了.公元前的都会判断成不合法
- '''
复制代码
这个脚本只能计算公元后的年份,公元前的就不可以了.公元前的都会判断成不合法
请输入一个年份:-2016
输入不合法,请重新输入:
为了解决这个问题我又写了一个:
- year = input('请输入一个年份:')
- y = int(year)
- y = abs(y)
- if type(y) == type(1):#input输入的都是字符串,怎么办。。。
- if y%400 == 0:
- print(year+'是闰年')
- else:
- if y%4 == 0 and y%100 != 0:
- print(year+'是闰年')
- else:
- print(year+'是平年')
- '''
- 这个程序中,能判断公元前的年份,但是对不合法输入就不会提醒
复制代码
这个程序中,能判断公元前的年份,但是对不合法输入就不会提醒
请输入一个年份:aaa
Traceback (most recent call last):
File "Z:\教育\python files\[External]year - gongyuanqian.py", line 6, in <module>
y = int(year)
ValueError: invalid literal for int() with base 10: 'aaa'
因为input输入的是字符串,就不能直接使用abs()取绝对值,需要先使用int,但这样一来就无法进行非法输入的判断.如果非法输入,就不会有提示.
问: 怎样才能既可以判断公元前年份的闰年与否,还能在输入不合法的情况下进行提示. (答案里的程序也不能判断公元前的)
- year = input('请输入一个年份:')
- while True:
- try:
- y = int(year)
- except ValueError:
- year = input("输入错误!请重新输入一个年份:")
- else:
- break
- y = abs(y)
- if type(y) == type(1):#input输入的都是字符串,怎么办。。。
- if y%400 == 0:
- print(year+'是闰年')
- else:
- if y%4 == 0 and y%100 != 0:
- print(year+'是闰年')
- else:
- print(year+'是平年')
复制代码
|
|