代际判断程序elif语句条件为True时无法输出,仅执行if语句求助
问题原因与修复方案
核心问题
你的代码里所有elif条件失效的原因是:用==比较整数和range()对象永远不会成立。range()返回的是一个表示数值范围的对象,不是单个年份值,所以int(Age) == range(...)这种判断逻辑完全错误,导致这些elif分支永远不会被触发。
另外还有两个细节问题:
- 输入提示里的拼写错误:
where应该改成were range是左闭右开区间,比如range(1981, 2000)实际包含1981到1999年,会漏掉2000年的情况,和第一个if的>=2001衔接不上。
修复后的代码
推荐用区间比较的方式,逻辑更直观且高效:
birth_year = int(input('What year were you born? ')) if birth_year >= 2001: print("Generation Z/Boomlets") elif 1981 <= birth_year <= 2000: print("Generation Y/Millennium") elif 1965 <= birth_year <= 1980: print("Generation X") elif 1946 <= birth_year <= 1964: print("Baby Boomers") elif 1927 <= birth_year <= 1945: print("Mature / Silents") elif 1901 <= birth_year <= 1926: print("GI Generation")
如果坚持用range,需要修正两个点:一是用in判断是否在范围内,二是调整range的结束值为区间上限+1(适配左闭右开特性):
birth_year = int(input('What year were you born? ')) if birth_year >= 2001: print("Generation Z/Boomlets") elif birth_year in range(1981, 2001): print("Generation Y/Millennium") elif birth_year in range(1965, 1981): print("Generation X") elif birth_year in range(1946, 1965): print("Baby Boomers") elif birth_year in range(1927, 1946): print("Mature / Silents") elif birth_year in range(1901, 1927): print("GI Generation")
内容的提问来源于stack exchange,提问作者Mirco Susan
相关产品推荐
相关产品推荐

