如何修复剪刀石头布程序中的循环和中断错误?

问题描述 投票:0回答:0

我在 Powershell 中编写了一个运行剪刀石头布的基本程序。


import random

print("Lets play Rock, Paper, Scissors...")
print("Type 'quit' to quit the game")
pwins = 0
cwins = 0
winning_score = 2

while pwins < winning_score and cwins < winning_score:
    print(f"Player wins:{pwins} | Computer wins: {cwins}")
    p1 = input("Player's move: ").lower()
    
    rand_num = random.randint(0,2)
    if rand_num == 0:
        computer = "rock"
    elif rand_num == 1:
        computer = "paper"
    else:
        computer = "scissors"

    if p1 == "quit" or p1 == "q":
        break
        
    print(f"Computer chooses: {computer}")

    if p1 == computer:
        print("It's a tie...")
        p1 = input("Player's move: ").lower()

    if p1 == "rock":
        if computer == "paper":
            print("Computer wins")
            cwins += 1
        else:
            print("Player wins")
            pwins += 1
    elif p1 == "paper":
        if computer == "scissors":
            print("Computer wins")
            cwins += 1
        else:
            print("Player wins")
            pwins += 1
    elif p1 == "scissors":
        if computer == "rock":
            print("Computer wins")
            cwins += 1
        else:
            print("Player wins")
            pwins += 1
    else:
        print("Please enter a valid move!")

    print(f"Final score... Player: {pwins} | Computer: {cwins}")

    if pwins > cwins:
        print("Congrats, you won!")
    elif pwins < cwins:
        replay = input("You lost...Do you want to play again? (y/n) ")
    if replay == "y":
        cwins = 0
        pwins = 0
    else:
        print("Loser!")
    else:
        print("It's a tie")`

问题在于每当我得到 p1 == computer tie 时,如果我选择立即退出,我就会得到一个错误。我得到“请输入一个有效的动作!”作为回应。如果我第二次输入“退出”,程序将正常结束。

第二个问题是一旦玩家输了,程序会问“你想再玩一次吗?(y/n)”。如果我选择“y”,程序不会循环,只会结束。

我曾尝试移动代码段并将它们按不同的顺序放置以使中断和循环正常运行,但我不知所措,因为问题无法解决并且会出现其他错误。感谢您的帮助。

python-3.x while-loop break
© www.soinside.com 2019 - 2024. All rights reserved.