如何为石头剪刀布游戏的玩家与电脑实现分数记录功能?
石头剪刀布游戏:修正分数记录逻辑
直接把单个score变量拆成两个独立的分数变量就行,分别记录玩家和电脑的得分,再调整胜负判断里的分数更新逻辑,就能实现需求。
核心修改点
- 替换单个分数变量为
player_score和computer_score,初始值都设为0 - 玩家获胜时给
player_score加1,电脑获胜时给computer_score加1,平局不修改分数 - 每局结束后展示当前双方比分,游戏结束时显示最终结果
修改后的完整代码
import random def play_rps(): # 初始化双方分数,替代原来的单个score变量 player_score = 0 computer_score = 0 while True: # 获取玩家输入 player_choice = input("请选择:石头(r)/剪刀(s)/布(p),输入q退出游戏:").lower() if player_choice == 'q': break if player_choice not in ['r', 's', 'p']: print("无效输入,请重新选!") continue # 电脑随机选 computer_choice = random.choice(['r', 's', 'p']) choices = {'r': '石头', 's': '剪刀', 'p': '布'} print(f"你选了{choices[player_choice]},电脑选了{choices[computer_choice]}") # 判断胜负并更新分数 win_conditions = [ ('r', 's'), ('s', 'p'), ('p', 'r') ] if (player_choice, computer_choice) in win_conditions: print("这局你赢了!") player_score += 1 elif player_choice == computer_choice: print("平局!") else: print("这局电脑赢了!") computer_score += 1 # 显示当前比分 print(f"当前比分:你 {player_score} - {computer_score} 电脑\n") # 游戏结束展示最终比分 print(f"游戏结束!最终比分:你 {player_score} - {computer_score} 电脑") if __name__ == "__main__": play_rps()
代码说明
- 用两个变量分别存分,彻底解决单个变量无法区分双方得分的问题
- 把获胜条件整理成元组列表,逻辑更清晰,后续维护也方便
- 每局结束后实时显示比分,玩家能直观看到当前进度
内容的提问来源于stack exchange,提问作者Hamza Khatib
相关产品推荐
相关产品推荐

