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

Python石头剪刀布游戏平局判定失效问题求助

石头剪刀布游戏平局判定失效问题解决

问题说明

编程新手第一天编写Python石头剪刀布游戏时遇到问题:当玩家与电脑选择相同时,未按预期触发平局判定,无法得到平局结果。以下是原代码:

import random


def get_choices():
    player_choice = (input('Enter a choice (Rock , Paper , Scissors)'))
    c_choices = ['Rock', 'Paper', 'Scissors']
    computer_choice = random.choice(c_choices)
    choices = {'player': player_choice, 'computer': computer_choice}
    return choices


def check_win(player,computer):
    print(f"You chose {player},computer chose {computer}")
    if player == computer:
        return "its a tie!"
    elif player== 'rock':
        if computer=='scissors':
            return "ROCK SMASHES SCISSORS!, YOU WIN!"
        else:
            return "PAPER COVERS ROCK!, YOU LOSE!"

    elif player== 'paper':
        if computer=='rock':
            return "PAPER COVERS ROCK, YOU WIN!"
        else:
            return "SCISSOR CUTS PAPER!, YOU LOSE!"

    elif player == 'scissors':
        if computer == 'paper':
            return "SCISSORS CUTS PAPER!, YOU WIN!"
        else:
            return "ROCK SMASHES SCISSORS!, YOU LOSE!"

choices = get_choices()
result = check_win(choices['player'], choices['computer'])
print(result)

问题根源

核心问题是大小写不匹配:

  • 电脑的选择是首字母大写格式(如'Rock')
  • 玩家输入通常是小写(如'rock'),或者大小写和电脑的不一致,导致player == computer的判断永远不成立,自然触发不了平局逻辑。
  • 另外,玩家输入时可能不小心加了空格(比如' Rock '),也会导致匹配失败。

解决方案

1. 统一大小写格式

将玩家输入和电脑的选择都转换成相同的大小写(比如全小写或全大写),消除大小写差异的影响。

2. 清理输入空格

对玩家输入做去空格处理,避免因意外空格导致匹配失败。

修改后的代码示例

import random


def get_choices():
    # 处理玩家输入:转小写+去首尾空格
    player_choice = input('Enter a choice (Rock, Paper, Scissors): ').strip().lower()
    c_choices = ['rock', 'paper', 'scissors']  # 统一用小写
    computer_choice = random.choice(c_choices)
    choices = {'player': player_choice, 'computer': computer_choice}
    return choices


def check_win(player, computer):
    print(f"You chose {player}, computer chose {computer}")
    if player == computer:
        return "It's a tie!"
    elif player == 'rock':
        return "ROCK SMASHES SCISSORS!, YOU WIN!" if computer == 'scissors' else "PAPER COVERS ROCK!, YOU LOSE!"
    elif player == 'paper':
        return "PAPER COVERS ROCK, YOU WIN!" if computer == 'rock' else "SCISSORS CUT PAPER!, YOU LOSE!"
    elif player == 'scissors':
        return "SCISSORS CUT PAPER!, YOU WIN!" if computer == 'paper' else "ROCK SMASHES SCISSORS!, YOU LOSE!"

choices = get_choices()
result = check_win(choices['player'], choices['computer'])
print(result)

内容的提问来源于stack exchange,提问作者Om Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 11:25:19