我是编程的新手,因此决定尝试在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.")
我没有收到错误消息
答案 0 :(得分:5)
这是因为您对or
运算符在这种情况下的工作方式有基本的误解:
while userScore < 2 or computerScore < 2:
如果 while
或 userScore
小于2,则此computerScore
块中包含的循环将继续执行。
您要寻找的是当两个循环之一超过2时结束循环。将or
更改为and
以确保循环仅在两个< / strong> userScore
和computerScore
小于2:
while userScore < 2 and computerScore < 2:
答案 1 :(得分:0)
您应该暂时拥有and
,而不是or
。
当两个值都低于2时,您要继续。