为什么while循环没有停止

2024-03-28 22:07:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个新的编程,并决定尝试和作出一个简单的最好的3石头剪刀布游戏,你对电脑玩。但是当我测试代码时,即使在我或计算机获得2次胜利之后,while循环也不会停止。你知道吗

import random

computerInputList = ["rock", "paper", "scissors"]
userScore = 0
computerScore = 0

while userScore < 2 or computerScore < 2:
    computerInput = random.choice(computerInputList)
    print("rock, paper or scissors? ")
    userInput = input()
    print()

    if userInput == computerInput:
        print("You played: " + userInput)
        print("Computer played: " + computerInput)
        print()
        print("This round is a tie!")

    elif userInput != computerInput:
        if userInput == "rock":
            if computerInput == "scissors":
                print("You played: " + userInput)
                print("Computer played: " + computerInput)
                print()
                print("You won this round!")
                userScore = userScore + 1
            elif computerInput == "paper":
                print("You played: " + userInput)
                print("Computer played: " + computerInput)
                print()
                print("You lost this round!")
                computerScore = computerScore + 1
        elif userInput == "paper":
            if computerInput == "rock":
                print("You played: " + userInput)
                print("Computer played: " + computerInput)
                print()
                print("You won this round!")
                userScore = userScore + 1
            elif computerInput == "scissors":
                print("You played: " + userInput)
                print("Computer played: " + computerInput)
                print()
                print("You lost this round!")
                computerScore = computerScore + 1
        elif userInput == "scissors":
            if computerInput == "paper":
                print("You played: " + userInput)
                print("Computer played: " + computerInput)
                print()
                print("You won this round!")
                userScore = userScore + 1
            elif computerInput == "rock":
                print("You played: " + userInput)
                print("Computer played: " + computerInput)
                print()
                print("You lost this round!")
                computerScore = computerScore + 1
        else:
            print("Invalid input!")
            print("Accepted inputs: rock, paper, scissors.")

我没有收到错误消息


Tags: youifthiscomputerpaperprintscissorsrock
2条回答

这是因为您对or操作符在这种情况下的工作方式有一个基本的误解:

while userScore < 2 or computerScore < 2:

如果或者userScore或者computerScore小于2,则此while块中包含的循环将继续执行。你知道吗

你要寻找的是当两个循环中的一个超过2时循环结束。将or更改为and,以确保只有当userScorecomputerScore都小于2时循环才会继续:

while userScore < 2 and computerScore < 2:

while中应该有一个and,而不是or。你知道吗

当两者都低于2时,您要继续。你知道吗

相关问题 更多 >