编程入门求助:判断输入是否为'l'/'h'/'c'的if语句逻辑问题
你的条件判断逻辑踩坑啦!
嘿,刚上手编程遇到这种逻辑问题太正常了,我来给你把问题掰扯明白~
你现在的代码里,if条件的逻辑运算符用错了,这就是为什么输入'l'、'h'、'c'都会触发错误提示的原因!
问题根源分析
你写的条件是:
if command != "l" or command != "h" or command != "c":
咱们拿输入'l'的情况来拆解:
command != "l"→ 这是False(因为输入就是'l')command != "h"→ 这是True('l'确实不等于'h')command != "c"→ 这也是True
而or逻辑运算符的规则是:只要有一个条件为真,整个表达式就为真。所以不管你输入的是'l'、'h'还是'c',这三个条件里至少有两个是True,整个if条件就会成立,自然会执行错误提示的代码!
修正方案
这里我们需要的逻辑是:当输入既不是'l',也不是'h',还不是'c'的时候,才提示错误,所以得把or换成and,或者用更简洁的not in判断:
方案1:替换逻辑运算符为and
command = input() if command != "l" and command != "h" and command != "c": print("Please insert l, h or c: ") command = input("l, h or c: ") # input本身就是字符串,不用str()转换 else: print("working")
方案2:用not in简化判断(更推荐,代码更易读)
command = input() # 用集合来存储合法输入,查找效率更高 if command not in {"l", "h", "c"}: print("Please insert l, h or c: ") command = input("l, h or c: ") else: print("working")
小补充
另外提个小细节:input()函数返回的结果本来就是字符串类型,所以不需要再用str()去转换啦,直接赋值给command就行~
内容的提问来源于stack exchange,提问作者HuPfer
相关产品推荐
相关产品推荐

