如何修正年份范围输入校验代码?解决2000--2000校验异常
年份范围输入校验问题修正
问题描述
需要校验类似YYYY--YYYY格式的输入字符串,要求两个年份不同且均处于1960到2020之间。现有代码逻辑错误,导致输入2000--2000时错误输出无效提示,代码如下:
inp = input('Input two distinct years in the range 1960 -- 2020:') if inp <= '1960' or inp >='2020' or inp!='--' or inp =='2000--2000': print('Not a valid range of years, giving up...')
原代码问题分析
原代码完全错误地将整个输入字符串与单个年份、--直接比较,既没有拆分提取两个年份,也没有做通用的范围和唯一性校验,硬编码2000--2000的判断逻辑完全不具备复用性。
修正方案
正确的做法是先拆分输入提取两个年份,再逐一校验格式、范围和唯一性:
inp = input('Input two distinct years in the range 1960 -- 2020:') # 拆分输入为年份部分 year_parts = inp.split('--') is_valid = True # 检查格式是否符合"年份--年份" if len(year_parts) != 2: is_valid = False else: try: # 转换为整数并去除可能的空格 year1 = int(year_parts[0].strip()) year2 = int(year_parts[1].strip()) except ValueError: # 非数字输入判定无效 is_valid = False else: # 校验年份范围和唯一性 if not (1960 <= year1 <= 2020) or not (1960 <= year2 <= 2020) or year1 == year2: is_valid = False if not is_valid: print('Not a valid range of years, giving up...') else: print('Valid year range entered!')
代码说明
- 使用
split('--')拆分输入,确保格式符合要求 - 处理输入中可能存在的前后空格(如
2000 -- 2010也能正常识别) - 校验年份是否为有效整数
- 检查两个年份是否都在1960-2020区间内
- 确保两个年份不相同
- 只有所有条件满足时才判定为有效,否则输出错误提示
内容的提问来源于stack exchange,提问作者xzha_athena
相关产品推荐
相关产品推荐

