为什么while循环没有停止

时间:2019-11-05 21:39:24

标签: 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.")

我没有收到错误消息

2 个答案:

答案 0 :(得分:5)

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

while userScore < 2 or computerScore < 2:

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

您要寻找的是当两个循环之一超过2时结束循环。将or更改为and以确保循环仅在两个< / strong> userScorecomputerScore小于2:

while userScore < 2 and computerScore < 2:

答案 1 :(得分:0)

您应该暂时拥有and,而不是or

当两个值都低于2时,您要继续。