如何修改Python石头剪刀布代码中的if语句以实现更精简的条件判断写法
石头剪刀布判断逻辑优化方案
你原有写法== (1 or -2)不生效的核心原因:Python中or是逻辑运算符,会从左到右返回第一个为真的值,数字1本身属于布尔真值,所以1 or -2的运算结果永远是1,根本不会触发-2的判断逻辑,自然无法覆盖所有获胜场景。
可行的紧凑合并写法
- 成员判断法(可读性最高,和原逻辑完全等价)
直接把差值放到集合中做成员校验,仅需单次判断即可覆盖两种获胜场景:
table = {'r':0, 'p':1, 's':2} p = input() m = input() if (table[p] - table[m]) in {1, -2}: print('w') else: print('l')
- 取模运算法(代码最精简)
利用石头剪刀布的循环胜负特性,对差值取3的模,所有获胜场景的模运算结果固定为1,无需罗列两个判断值:
table = {'r':0, 'p':1, 's':2} p = input() m = input() if (table[p] - table[m]) % 3 == 1: print('w') else: print('l')
该写法的原理是-2 % 3的运算结果为1,和差值为1的场景模运算结果完全一致,刚好可以覆盖你需要的所有获胜条件。
内容的提问来源于stack exchange,提问作者user15950095
相关产品推荐
相关产品推荐

