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

Python Tkinter石头剪刀布游戏胜负判断函数故障排查求助

解决Tkinter石头剪刀布游戏胜负判断的问题

首先看你代码里的核心问题:第二个判断玩家获胜的if语句明显没写完(最后写到((c就中断了),这直接导致除了「电脑出布、玩家出石头」这个场景外,其他所有胜负、平局情况都没有对应的提示逻辑,自然就没输出啦。另外你的代码还缺少平局的判断分支,得一起补上。

我帮你把完整的Winning函数修复并优化了,逻辑更清晰也更健壮:

from tkinter import messagebox

def Winning(comp, choice):  # 建议把comp和choice作为参数传入,避免全局变量的作用域问题
    # 先判断平局场景
    if comp == choice:
        messagebox.showinfo("Info", "IT'S A DRAW!!!")
    # 判断电脑获胜的三种情况
    elif ((comp == 2 and choice == 1) or 
          (comp == 3 and choice == 2) or 
          (comp == 1 and choice == 3)):
        messagebox.showinfo("Info", "YOU LOSE!!!")
    # 剩下的所有情况都是玩家获胜
    else:
        messagebox.showinfo("Info", "YOU WIN!!!")

几个优化点说明:

  • 把comp和choice作为函数参数传入,比依赖全局变量更规范,也不容易出现变量找不到的问题
  • 先判断平局,逻辑更顺畅;之后判断电脑赢的固定场景,最后用else直接覆盖玩家赢的所有情况,不用重复写一堆条件
  • 把长条件拆成多行,可读性比挤在一行好很多

调用这个函数的时候,记得正确传递电脑和玩家的选择值(1=石头,2=布,3=剪刀),比如玩家点击石头按钮时把choice设为1,电脑随机生成的comp也确保是1/2/3中的一个,再调用Winning(comp, choice)就可以正常触发所有场景的提示啦。

内容的提问来源于stack exchange,提问作者Adrian DSouza

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:15:24