如何在Python三局两胜RPS游戏中实现玩家积分累加
石头剪刀布游戏积分累加问题解决方法
核心问题原因
你写的pc_points = +1和player_points = +1是直接将变量赋值为1,而非在现有积分基础上累加。+1在这里只是表示正数1,不是加法操作,所以每次获胜后积分都会被重置为1,无法累加。
正确的累加方式
有两种等价写法可以实现积分累加:
- 使用增量赋值运算符(推荐):
pc_points += 1 # 等同于 pc_points = pc_points + 1 player_points += 1 # 等同于 player_points = player_points + 1 - 显式基于当前值计算:
pc_points = pc_points + 1 player_points = player_points + 1
额外修复:游戏结束条件错误
原代码中两个结束判断都是player_points == 3,第二个应该改为pc_points == 3,否则电脑赢满3局后无法触发“你输了”的退出逻辑。
修改后的完整代码
import random import sys pc_points = 0 player_points = 0 acceptance_of_death = input('welcome to the possibly winable RPS game. Do you dare to attempt this quite possible feat?\nAnswer yes or no\n') while True: if acceptance_of_death == 'yes': you_will_lose = input('Ok then. Rock, paper, or scissors?\n') else: print('Ok, your loss.\n') sys.exit() rps_list = ('rock', 'paper', 'scissors') result = random.choice(rps_list) if result == you_will_lose.lower(): print("that's a tie, try again.") print(f"Player points: {player_points}, PC points: {pc_points}") elif result == 'rock' and you_will_lose.lower() == 'scissors': print('PC chooses rock. You lose.') pc_points += 1 print(f"Player points: {player_points}, PC points: {pc_points}") elif result == 'scissors' and you_will_lose.lower() == 'paper': print('PC chooses scissors. You lose.') pc_points += 1 print(f"Player points: {player_points}, PC points: {pc_points}") elif result == 'paper' and you_will_lose.lower() == 'rock': print('PC chooses paper. You lose.') pc_points += 1 print(f"Player points: {player_points}, PC points: {pc_points}") else: print("you win! don't get too excited I made this in a very miniscule amount of time.") player_points += 1 print(f"Player points: {player_points}, PC points: {pc_points}") if player_points == 3: print('You win. Feel accomplished!') sys.exit() if pc_points == 3: print('You lose. Pathetic!') print(f"Player points: {player_points}, PC points: {pc_points}") sys.exit()
内容的提问来源于stack exchange,提问作者kremebrule
相关产品推荐
相关产品推荐

