Python中while语句使用!=运算符的逻辑异常问题求助
性别输入验证代码的逻辑错误修复
问题分析
你写的两段代码都栽在逻辑运算符的使用上:
第一段代码的循环条件
gender.capitalize() != "M" or gender.capitalize() != "F"
不管输入的是M还是F,总有一个!=条件为真。比如输入M时,!= "F"成立;输入F时,!= "M"成立。or只要有一个条件为真就会让整个表达式为真,导致循环永远停不下来。第二段代码的条件
not gender.capitalize() == "M" or gender.capitalize() == "F"not只作用于第一个判断,等价于(不是M) 或者 (是F)。当输入F时,第二个条件成立,整个表达式为真,循环会继续执行,起不到验证作用。
正确写法
写法一:用and替换or
gender = input("Gender: ") while gender.capitalize() != "M" and gender.capitalize() != "F": print("Only M or F please: ") gender = input("Gender: ")
只有当输入既不是M也不是F时,才进入循环提示重新输入,符合验证需求。
写法二:用not in简化逻辑
gender = input("Gender: ") while gender.capitalize() not in {"M", "F"}: print("Only M or F please: ") gender = input("Gender: ")
直接判断输入的大写形式是否不在允许的集合中,逻辑更直观,代码更简洁。
内容的提问来源于stack exchange,提问作者Naos
相关产品推荐
相关产品推荐

