Python性别判断脚本逻辑错误求助:任意输入均触发两个分支输出
搞定你的性别判断代码问题!
嘿,我一眼就发现你代码里的坑啦!问题出在if语句的逻辑判断写错了——你写的if gender == M or m:根本不是在判断用户输入等于Male或者male,而是在做两个判断:gender == M是否为真,或者m这个字符串本身是否为真。而只要字符串非空,Python就会把它当成True,所以不管用户输入啥,这两个if条件都会成立,自然两条消息都打印出来啦!
给你几种简单的修复方案:
方案1:把逻辑判断写完整
直接把or两边的比较都写清楚,确保每个条件都是完整的“输入等于某值”:
gender = input("Please state your gender: ") if gender == 'Male' or gender == 'male': print("You are a male") if gender == 'Female' or gender == 'female': print("You are a female")
(其实连变量都不用单独定义,直接写字符串更省事)
方案2:统一转换大小写(最简洁)
不用纠结大小写,直接把用户输入转成小写(或者大写),再和统一的字符串比较,代码瞬间清爽:
gender = input("Please state your gender: ").lower() if gender == 'male': print("You are a male") elif gender == 'female': print("You are a female") else: print("哎呀,请输入有效的性别哦(Male/Female/male/female都可以~)")
这里用elif代替第二个if,还加了个else分支处理无效输入,用户体验直接拉满!
方案3:用列表+in关键字(扩展性更强)
如果以后还要支持更多写法(比如输入'M'/'m'也算男性),可以把所有合法选项放进列表,用in判断:
gender = input("Please state your gender: ") male_choices = ['Male', 'male', 'M', 'm'] female_choices = ['Female', 'female', 'F', 'f'] if gender in male_choices: print("You are a male") elif gender in female_choices: print("You are a female") else: print("抱歉,这个性别输入我识别不了😅")
选哪种方案都能完美解决你的问题,试试吧!
内容的提问来源于stack exchange,提问作者Josh
相关产品推荐
相关产品推荐

