首页 > 解决方案 > 为什么while循环没有停止

问题描述

我是编程新手,因此决定尝试制作一个简单的最好的 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.")

我没有收到错误消息

标签: python

解决方案


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

while userScore < 2 or computerScore < 2:

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

您正在寻找的是当两者之一超过 2 时循环结束。更改orand以确保循环仅在两者 userScorecomputerScore小于 2 时继续:

while userScore < 2 and computerScore < 2:

推荐阅读