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

