为何Python while循环验证性别输入时需用and而非or?
为什么循环条件要用
and而不是or? 咱们直接拆解逻辑就能明白问题所在:
先看你原来用的or条件:sex != 'M' or sex != 'F'
- 假设用户输入
M:sex != 'M'是假,但sex != 'F'是真,or只要有一个表达式为真,整体条件就为真,所以循环会一直执行,永远跳不出去。 - 假设用户输入
F:sex != 'F'是假,但sex != 'M'是真,同样or条件整体为真,循环还是停不下来。 - 哪怕输入其他字符(比如
X),两个表达式都是真,or条件确实会触发错误提示,但核心问题是输入正确值时也无法终止循环。
换成and之后,条件变成sex != 'M' and sex != 'F':
- 只有当输入的值既不是M也不是F的时候,两个表达式都为真,
and条件整体才为真,这时候才会进入循环提示错误。 - 如果输入的是M或者F,两个表达式里必有一个为假,
and条件整体为假,循环直接终止,程序继续往下执行。
说白了,你要的是「输入既不是M也不是F时才循环」,对应的逻辑就是同时满足“不是M”和“不是F”,所以必须用and;用or的话,逻辑变成了「只要不是M,或者不是F就循环」,而任何值都不可能同时是M和F,这个条件永远成立,循环自然停不下来。
修正后的正确代码:
sex = str(input('[ M / F ]: ')).upper().strip() while sex != 'M' and sex != 'F': print('error') sex = str(input('try again [ M / F ]: ')).upper().strip() print('It\'s done :)')
内容的提问来源于stack exchange,提问作者Arruda
相关产品推荐
相关产品推荐

