输入0后无输出,Python州际公路编号程序调试求助
解决州际公路编号程序中0和200无输出的问题
你的代码存在两个核心问题导致0和200无法触发无效提示:
- 输入0时:既不满足
0 < highway_num < 100(0不大于0),也不满足99 < highway_num < 1000,两个if块都跳过,无输出。 - 输入200时:虽然进入了辅助公路的判断分支,但原逻辑把无效判断嵌套在辅助公路的条件里,且没有覆盖所有可能的无效场景(比如0完全不在任何判断范围内)。
下面是修正后的代码,调整了逻辑顺序并补全了规则:
highway_num = int(input()) # 优先处理所有无效情况 if highway_num == 0 or highway_num == 200 or highway_num < 1 or highway_num > 999: print(f'{highway_num} is not a valid interstate highway number.') # 处理主公路(1-99) elif 0 < highway_num < 100: print(f'I-{highway_num} is primary,', end='') print(' going east/west.' if highway_num % 2 == 0 else ' going north/south.') # 处理辅助公路(100-999,排除200) elif 99 < highway_num < 1000: primary_num = highway_num % 100 print(f'I-{highway_num} is auxiliary, serving I-{primary_num},', end='') print(' going east/west.' if primary_num % 2 == 0 else ' going north/south.')
关键调整点:
- 逻辑顺序:把无效判断放在最前面,确保0、200这类数值直接触发提示,不会被后续条件遗漏。
- 用
elif替代独立if:避免多个条件同时触发,逻辑更严谨,一旦某个条件满足,后面的分支不再执行。 - 补全辅助公路规则:根据州际公路实际规则,辅助公路的方向由其对应的主公路(编号最后两位)决定,这里补充了这部分逻辑。
内容的提问来源于stack exchange,提问作者uwu owo
相关产品推荐
相关产品推荐

