Python多条件if语句判断性别输入时出现逻辑错误求助
问题分析与解决
嘿,我一眼就揪出你代码里的问题啦!问题出在性别判断的逻辑条件错误上,咱们来拆解一下:
你写的判断条件是:
if gender!='M' or gender!='F': print "Wrong input."
这个逻辑完全不对哦!不管你输入M还是F,这个条件都会成立:
- 当输入
M时,gender!='M'是假,但gender!='F'是真,OR逻辑只要有一个为真就会执行代码块,所以会输出"Wrong input"; - 当输入
F时,gender!='F'是假,但gender!='M'是真,同样触发错误提示。
修正方案
你可以用两种方式修复这个逻辑:
方式1:把or改成and
只有当输入既不是M也不是F的时候,才提示错误:
if gender != 'M' and gender != 'F': print "Wrong input."
方式2:用not in判断(更简洁)
直接检查输入是否不在合法选项里:
if gender not in ('M', 'F'): print "Wrong input."
修正后的完整代码片段
def check(aw,iw): if abs(aw-iw)<5 : print "Your weight is normal." elif abs(aw-iw)>5 and abs(aw-iw)<15 : print "Your weight is about normal." else: print "Your weight is not normal." return print "Enter your gender (M/F)" gender=raw_input() if gender not in ('M', 'F'): print "Wrong input." else: if gender=='M': # 这里补充你原本的体重输入逻辑即可 pass else: # 处理女性体重判断的逻辑 pass
顺带提一句:如果要兼容大小写输入(比如用户输入小写m或f),可以把输入转成大写再判断:gender = raw_input().upper(),这样容错性更好~
内容的提问来源于stack exchange,提问作者user9646511
相关产品推荐
相关产品推荐

