Python中使用or与sys.exit处理无效输入的问题咨询
问题解答
关于第一个代码的判断
你的判断完全正确。这段代码里的or逻辑存在致命问题:不管user_choice是"1"、"2"还是"3",三个条件里至少有两个是成立的(比如输入"1"时,user_choice != "2"和user_choice != "3"都是True)。而or逻辑只要有一个条件为True,整个表达式就为True,所以无论输入有效还是无效,程序都会触发退出。
修复后的代码是否可行?
你写的修复代码是可行的,它通过先判断有效输入并跳过(pass),再对无效输入执行退出逻辑,确实能解决问题。但这种写法属于"正向判断后反向处理",逻辑上不够直接,可读性稍差。
更优的处理方式
推荐直接用in操作符检查输入是否在有效选项集合中,代码更简洁直观:
# Sub Code: Invalid Choice Handler if user_choice not in {"1", "2", "3"}: sys.exit("You typed an invalid choice, you lose.")
用集合{"1", "2", "3"}来存储有效选项,不仅代码更短,集合的成员查找效率也比多个or判断更高(尤其是当有效选项数量较多时)。另外注意拼写:你代码里的loose是错误的,正确拼写是lose。
内容的提问来源于stack exchange,提问作者Nymexx
相关产品推荐
相关产品推荐

