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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:15:04