Python初学者if语句未触发对应打印仅执行else分支问题求助
问题诊断
- 你代码里的
upper是字符串的内置转换方法,调用方法必须加后缀括号(),你没写括号时,代码实际是把方法本身的内存地址对象和字符串"no"做对比,二者永远不可能相等,所以if条件永远不成立,只会执行else分支。 - 其次
upper()方法会把输入的字符串全部转为大写格式,转换后的结果是大写的"NO",你用转换后的结果和小写的"no"做匹配也永远无法命中条件。
修复后可正常运行的代码
如果需要保留原英文交互逻辑,修正代码如下:
canyou = input("Can you make a good meal on your own? ") canyou1 = input("Can you wash your clothes well? ") canyou2 = input("Can you clean the house properly? ") if canyou.upper() == "NO" and canyou1.upper() == "NO" and canyou2.upper() == "NO": print("You need your mama") else: print("You don't need your mama")
如果需要切换为中文交互,对应代码如下:
canyou = input("你能自己做好一顿饭吗?") canyou1 = input("你能自己把衣服洗干净吗?") canyou2 = input("你能把家里打扫妥当吗?") if canyou.upper() == "NO" and canyou1.upper() == "NO" and canyou2.upper() == "NO": print("你需要你妈妈") else: print("你不需要你妈妈")
补充说明
如果你更习惯转小写做判断,把代码里的upper()改成lower(),后面匹配的字符串改成小写的"no"即可,逻辑效果完全一致。
内容的提问来源于stack exchange,提问作者user15308562
相关产品推荐
相关产品推荐

