Tkinter石头剪刀布游戏中模3运算胜负判断逻辑是如何工作的?
石头剪刀布胜负判断公式原理说明
前提约定
首先明确你的预设规则:
- 石头(Rock)= 0
- 布(Paper)= 1
- 剪刀(Scissors)= 2
游戏胜负规则为:布赢石头、石头赢剪刀、剪刀赢布,相同选择则为平局。
公式原理解析
你用到的代码 whoWon = (computer_choice - human_choice) % 3 是利用模运算的循环特性,把所有胜负场景压缩为一行判断的精简写法,计算结果只有3种可能,对应不同的胜负状态:
结果为0:平局
当 (computer_choice - human_choice) % 3 == 0 时,说明双方选择数值相同,也就是出了一样的选项,判定为平局。
结果为1:电脑获胜
所有电脑赢的场景,计算结果都为1:
- 电脑出布(1)、人出石头(0):
(1-0) %3 = 1,符合布赢石头 - 电脑出剪刀(2)、人出布(1):
(2-1) %3 =1,符合剪刀赢布 - 电脑出石头(0)、人出剪刀(2):
(0-2) = -2,-2模3的结果为1,符合石头赢剪刀
结果为2:人类玩家获胜
所有人类赢的场景,计算结果都为2:
- 电脑出石头(0)、人出布(1):
(0-1) = -1,-1模3的结果为2,符合布赢石头 - 电脑出布(1)、人出剪刀(2):
(1-2) = -1,-1模3的结果为2,符合剪刀赢布 - 电脑出剪刀(2)、人出石头(0):
(2-0) %3 = 2,符合石头赢剪刀
补充说明
这个写法本质是利用了石头剪刀布的胜负循环规律:数值+1(模3)的一方获胜,通过差值取模的方式直接把胜负关系转化为了可枚举的固定结果,不需要写多层if-else分支判断,代码精简且执行效率高。
内容的提问来源于stack exchange,提问作者Kevin Huang
相关产品推荐
相关产品推荐

