Python中如何让if语句独立判断两个字符串?
问题分析与解决
你写的elif careful != "yes" "no"之所以无效,是因为Python里相邻的字符串会自动拼接,这行代码实际是在判断careful != "yesno",完全不是你想要的“输入不是yes也不是no”的逻辑。另外|和&是位运算符,用来处理数字的二进制位操作,不能用来判断字符串的逻辑关系,得用and/or这类逻辑运算符。
同时你的代码结构有问题:当careful == "yes"时才会进入第一个if块,里面再判断careful != "yes"根本不可能成立,所以那个elif分支永远不会触发。正确逻辑应该先检查输入是否合法,再处理年龄相关内容。
修正后的代码
careful = input("Are you Careful?").strip() # 去除输入前后空格,兼容用户误输入的带空格情况 # 先校验输入合法性 if careful not in ["yes", "no"]: print("nonsense, say yes or no") elif careful == "yes": print("ok good, what is your age?") age = int(input("Your age?")) if age <= 13: print("sorry, paws is hiding") else: print("Be careful! she nibbles, with no teeth") else: # 对应careful == "no"的情况 print("you have to be careful!")
关键改动说明
- 用
careful not in ["yes", "no"]直接判断输入是否不在合法选项内,比careful != "yes" and careful != "no"更简洁易读。 - 调整代码结构:先做输入合法性校验,再处理不同输入对应的逻辑,避免原代码分支位置错误导致的逻辑失效。
- 给input添加
.strip(),可以兼容用户不小心输入的前后空格(比如输入" yes "也能被识别为"yes")。
如果偏好使用!=和and的写法,判断条件可以写成:
if careful != "yes" and careful != "no":
效果和not in完全一致。
内容的提问来源于stack exchange,提问作者robertpaws
相关产品推荐
相关产品推荐

