You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 19:36:03