Python飞行信息查询工具elif分支匹配错误,输入glfail触发错误分支
问题根源
你的代码or逻辑存在语法错误:
两个elif判断条件中都存在单独直接写字符串常量的写法,比如第一个分支里的or 'efail abz'、第二个分支里的or 'efail gla'。在Python中,非空字符串的布尔判断结果永远为True,这就导致第一个elif的判断条件永远成立,不管输入什么内容都会直接进入第一个分支,根本不会走到匹配glfail的第二个分支。
修复方案
方案1:补全缺失的判断逻辑
把两个elif里漏写的answer ==补全即可,修正后的条件部分如下:
# 修正第一个分支的判断条件 elif answer == 'efailabz' or answer == 'engfailabz' or answer == 'efailegpd' or answer == 'engoutabz' or answer == 'eturnabz' or answer == 'efail abz' or answer == 'engfail abz' or answer == 'efail egpd' or answer == 'engout abz' or answer == 'eturn abz':
# 修正第二个分支的判断条件 elif answer == 'glfail' or answer == 'engfailgla' or answer == 'efailegpf' or answer == 'engoutgla' or answer == 'eturngla' or answer == 'efail gla' or answer == 'engfail gla' or answer == 'efail egpf' or answer == 'engout gla' or answer == 'eturn gla':
方案2:用成员判断简化代码(更推荐)
把每个分支对应的所有合法输入放到列表里,用in关键字判断输入是否在合法列表中,代码更易读也不容易出现漏写判断的问题:
# 提前定义各分支的合法输入列表,也可以直接写在判断条件里 abz_commands = ['efailabz', 'engfailabz', 'efailegpd', 'engoutabz', 'eturnabz', 'efail abz', 'engfail abz', 'efail egpd', 'engout abz', 'eturn abz'] gla_commands = ['glfail', 'engfailgla', 'efailegpf', 'engoutgla', 'eturngla', 'efail gla', 'engfail gla', 'efail egpf', 'engout gla', 'eturn gla'] # 分支判断可简化为 elif answer in abz_commands: # 原有16/34跑道的逻辑保持不变 elif answer in gla_commands: # 原有05/23跑道的逻辑保持不变
内容的提问来源于stack exchange,提问作者user17332177
相关产品推荐
相关产品推荐

