python - 为什么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.")
我没有收到错误消息
解决方案
or
这是因为您对操作员在这种情况下的工作方式有一个根本的误解:
while userScore < 2 or computerScore < 2:
如果或小于 2 ,则此块中包含的循环while
将继续执行。 userScore
computerScore
您正在寻找的是当两者之一超过 2 时循环结束。更改or
为and
以确保循环仅在两者 userScore
都computerScore
小于 2 时继续:
while userScore < 2 and computerScore < 2:
推荐阅读
- r - 集成 R 数据框并根据列值执行操作
- javascript - 使用 async / await 调用挂在 vue 组件中
- amazon-ec2 - 将 SSM 参数设置为 EC2 的环境变量 - 不起作用
- swift - 强制 NSStackView 拥抱内容
- node.js - 我在我的 nextJS 项目中使用“next-connect”时遇到了一个奇怪的错误,该项目已在 dev 中修复,但现在在 prod 中更糟
- dictionary - 为什么我会得到一个错误类型,其参数为同一目的使用了两次
- curl - 来自 NAT 网关后面的 Google Analytics API 调用被机器人过滤器过滤
- asp.net - 从 aspx 文件中运行 .NET 程序
- html - 以一个 SVG 图层为目标时,使用 css 动画折叠 SVG 信封的行为很奇怪
- javascript - 替代 html offsetTop