Python分支判断问题:输入数字9时无法触发对应elif分支如何修复
问题原因
- 条件判断顺序错误:数值9满足
>=8的判断规则,会直接命中第一个if分支并跳出循环,后续的elif help ==9分支永远不会被触发 - 分支逻辑拆分错误:第二个
if help <=100000是独立判断块,和后续的elif不属于同一判断链,且数值9同样满足<=100000的规则,就算前面的if不触发也会提前跳出 - 冗余逻辑错误:
print函数返回值为None,将print执行结果赋值给howMany后单独调用该变量没有任何作用,且赋值时已经提前执行了打印操作 - 命名不规范:
help是Python内置函数名,作为自定义变量使用会覆盖原有内置功能,建议替换为语义化的变量名
修复方案
调整判断顺序,优先匹配特殊值9,再处理其他区间的数值,同时修正冗余逻辑,可选增加输入合法性校验避免非数字输入报错,修复后代码如下:
while True: amnt = input('Okay, how many planets are in this solar sytem? ') # 增加非数字输入校验 try: planet_count = int(amnt) except ValueError: print('Please enter a valid number.') continue ast = planet_count * 89990189 # 优先匹配特殊值9 if planet_count == 9: print('Um, Pluto isn\'t a planet, you know...') print(f'That means there are roughly {ast} asteroids in this solar system!') break # 匹配其他合法数值区间 elif 8 <= planet_count <= 100000: print(f'That means there are roughly {ast} asteroids in this solar system!') break # 非法数值提示重试 else: print('Please try again.')
内容的提问来源于stack exchange,提问作者Finn Flaherty
相关产品推荐
相关产品推荐

