Python判断输入字符串每一位是否等于另一输入值的逻辑错误如何修正
错误原因
你编写的条件判断逻辑不符合预期,Python中==运算符优先级高于and,且单独出现的字符串变量会被隐式转为布尔值判断,因此你写的a[0] and a[1] and a[-1] == b实际等价于:
(bool(a[0])) and (bool(a[1])) and (a[-1] == b)
由于输入的a是3位非空数字字符串,a[0]、a[1]都是非空字符,对应的布尔值永远为True,因此整个条件实际只判断了a的最后一位是否等于b,中间位的比较逻辑完全缺失,才会出现输入717 7时错误返回成功的问题。
正确实现方案
下面提供几种可用的修复写法:
- 显式逐位比较,适合固定3位输入的场景
a,b = input().split() if a[0] == b and a[1] == b and a[2] == b: print("Jackpot!") else: print("Nah")
- 通用任意长度全匹配写法,用
all()函数实现,兼容a的长度变化的场景
a,b = input().split() if all(c == b for c in a): print("Jackpot!") else: print("Nah")
- 字符串整体匹配写法,逻辑更简洁
a,b = input().split() if a == b * len(a): print("Jackpot!") else: print("Nah")
内容的提问来源于stack exchange,提问作者user91919
相关产品推荐
相关产品推荐

