Python条件判断逻辑异常:无表情输入未输出'none'却输出'unsure'
问题分析与修复
核心问题
原代码的错误在于用or来合并表情计数,这完全不符合统计需求:
- Python中
or是逻辑运算符,不是数值累加。比如a or b会返回第一个非零的数值(如果a非零就返回a,否则返回b),而不是a+b。 - 当输入不含任何表情时,开心表情的两个
count结果都是0,伤心表情的两个count结果也都是0,此时0 == 0成立,触发第三个elif输出unsure,永远走不到else分支。
修复后的代码
user = input() # 正确累加两种开心/伤心表情的数量 happy_count = user.count(":-)") + user.count(" :-) ") sad_count = user.count(":-(") + user.count(" :-(") if happy_count > sad_count: print('happy') elif happy_count < sad_count: print('sad') elif happy_count == sad_count: # 只有当计数都不为0时才输出unsure,否则输出none if happy_count != 0: print('unsure') else: print('none')
关键修正点
- 用
+替代or,实现两种表情的数量累加 - 在相等判断的分支里,额外判断计数是否为0,区分"无表情"和"开心伤心数量相等"两种情况
内容的提问来源于stack exchange,提问作者Ahmed A. Shaker
相关产品推荐
相关产品推荐

