You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修正年份范围输入校验代码?解决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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 23:27:28