无需大量if语句如何在列表总和比较时输出胜负平三种结果?
实现方案
你可以通过差值符号映射字典的方式实现需求,全程不需要写多分支if判断,同时完全对齐你原有代码的胜负判定逻辑,新增平局的处理分支:
代码示例
totalA = [5, 5, 5] totalB = [5, 5, 5] sumA, sumB = sum(totalA), sum(totalB) # 字典映射三种判定结果,和你原有胜负逻辑完全对齐 result_map = { -1: "Win", 0: "平局", 1: "Lose" } # 计算sumA和sumB的大小关系符号,只会返回-1/0/1三个值 sign = (sumA > sumB) - (sumA < sumB) print(result_map[sign])
逻辑说明
- 当
sumA < sumB时:(False) - (True) = 0 - 1 = -1,对应输出Win,和你原有逻辑一致 - 当
sumA == sumB时:(False) - (False) = 0 - 0 = 0,对应输出平局 - 当
sumA > sumB时:(True) - (False) = 1 - 0 = 1,对应输出Lose,和你原有逻辑一致
如果后续需要调整胜负判定逻辑,只需要修改result_map里的对应值即可,不需要修改判断逻辑。
内容的提问来源于stack exchange,提问作者Astroneko
相关产品推荐
相关产品推荐

