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
相关产品推荐
相关产品推荐

