Python新手布尔逻辑问题:年龄判断学校阶段代码报错求助
问题分析与修复方案
嘿,我来帮你排查代码里的问题啦!
你遇到的核心问题是第三个if语句的布尔逻辑完全矛盾:
if age < 6.0 and age >18:
一个年龄怎么可能同时小于6又大于18呢?这两个条件永远不可能同时成立,所以输入5的时候,这个分支根本不会执行,自然就没输出NA啦。
另外还有几个可以优化的小细节:
- 你已经把
age转成了整数int,没必要再和浮点数6.0比较,直接用整数6更简洁 - 连续用三个独立的
if会做多余的判断,换成if-elif-else结构更高效,逻辑也更清晰
修正后的代码
import sys age = int(sys.argv[1]) if 6 <= age <= 11: print('primary school') elif 12 <= age <= 18: print('secondary school') else: print('NA')
为什么这样改?
- 用
if-elif-else:一旦某个条件满足,后面的判断就会直接跳过,比三个独立if更高效 - 合并条件:Python支持
6 <= age <=11这种连续比较,比age >=6 and age <=11更易读 else分支直接覆盖所有不满足前两个条件的情况,包括年龄小于6或者大于18的所有情况,完美解决了你之前的问题
现在再输入5试试,就能正常输出NA啦!
内容的提问来源于stack exchange,提问作者J.Martin
相关产品推荐
相关产品推荐

