Python实现石头剪刀布游戏遇阻碍,编程新手如何继续完成代码开发?
石头剪刀布Python游戏完善方案
现有代码核心问题
comp_choice函数仅实现了打印逻辑,没有返回值,无法获取电脑选择和用户输入做对比;且多次调用会重复生成随机数,导致判定逻辑混乱- 缺少用户输入合法性校验,用户输入非指定内容时程序会出错
- 胜负判定逻辑不完整,也没有实现平局重新游戏的循环逻辑
完整可运行代码
import random def get_comp_choice(): # 生成电脑选择,返回对应字符串 comp_num = random.randint(1, 3) if comp_num == 1: return "rock" elif comp_num == 2: return "paper" else: return "scissors" while True: # 获取并校验用户输入 player = input("Enter a choice rock, paper, or scissors: ").strip().lower() if player not in ["rock", "paper", "scissors"]: print("输入错误,请只能输入rock、paper、scissors其中一个") continue # 生成电脑选择并打印 comp = get_comp_choice() print(f"电脑的选择是:{comp}") # 平局判定 if comp == player: print("双方选择相同,重新开始游戏") continue # 胜负判定 if (comp == "rock" and player == "scissors") or \ (comp == "scissors" and player == "paper") or \ (comp == "paper" and player == "rock"): print(f"电脑获胜,规则说明:{comp} 击败 {player}") else: print(f"你获胜,规则说明:{player} 击败 {comp}") # 分出胜负结束循环 break
代码逻辑说明
- 外层用
while True实现循环逻辑,只有分出胜负才会结束程序,平局自动重开 - 用户输入后会统一转小写并去除前后空格,兼容大小写输入、带空格输入的场景
- 加入了输入校验逻辑,用户输入非法内容时会提示重新输入,不会直接崩溃
- 电脑的选择仅生成一次,存储在变量中再做后续判定,避免多次生成随机数导致的逻辑错误
- 胜负判定覆盖了所有规则,输出结果时会同步展示对应规则说明
内容的提问来源于stack exchange,提问作者fanghur
相关产品推荐
相关产品推荐

