[英]How do I stop this loop in Python?
这完全可以按照我想要的方式工作,但当用户输入无效选项时我无法停止它。 这是一款石头剪刀布游戏,它不仅记录用户的输入,还保留当前回合的分数,并保留所有回合的最终分数,直到游戏结束为止……就目前而言,从未发生过。 当用户输入无效选项时,如何结束此游戏? 我尝试使用break,但这是无效的。
def rock_paper_scissors():
playerScore = 0
computerScore = 0
print("")
player = input("Choose Rock, Paper, or Scissors: ")
player = player.lower()
choices = ["rock", "paper", "scissors"]
computer = random.choice(choices)
if player == computer:
print("I chose " + str(computer) + " and you chose " + player + ". It's a tie!")
elif player == "rock" and computer == "scissors":
playerScore += 1
print("I chose " + str(computer) + " and you chose " + player + ". Congratulations! You won! " + player + " beats " + str(computer) + ".")
elif player == "paper" and computer == "rock":
playerScore += 1
print("I chose " + str(computer) + " and you chose " + player + ". Congratulations! You won! " + player + " beats " + str(computer) + ".")
elif player == "scissors" and computer == "paper":
playerScore += 1
print("I chose " + str(computer) + " and you chose " + player + ". Congratulations! You won! " + player + " beats " + str(computer) + ".")
elif computer == "rock" and player == "scissors":
computerScore += 1
print("I chose " + str(computer) + " and you chose " + player + ". You lost! " + str(computer) + " beats " + player + ".")
elif computer == "paper" and player == "rock":
computerScore += 1
print("I chose " + str(computer) + " and you chose " + player + ". You lost! " + str(computer) + " beats " + player + ".")
elif computer == "scissors" and player == "paper":
computerScore += 1
print("I chose " + str(computer) + " and you chose " + player + ". You lost! " + str(computer) + " beats " + player + ".")
else:
print("Sorry, but you entered an invalid option. The game has ended. See below for the final score. Thank you for playing")
print("")
print("Your score:", str(playerScore) + ", Computer score:", str(computerScore))
return playerScore, computerScore
playerFinal = 0
computerFinal = 0
while True:
player, computer = rock_paper_scissors()
playerFinal += player
computerFinal += computer
print("Your score:", str(playerFinal) + ", Computer score:", computerFinal)
如果返回的分数都等于零,则玩家输入了错误的输入,您可以中断循环。
while True:
player, computer = rock_paper_scissors()
if player == 0 and computer == 0:
break
playerFinal += player
computerFinal += computer
print("Your score:", str(playerFinal) + ", Computer score:", computerFinal)
这可以通过简单地添加一个标志来检查while True循环是否需要结束来解决。 这里:
import random
def rock_paper_scissors():
playerScore = 0
computerScore = 0
flag = False
print("")
player = input("Choose Rock, Paper, or Scissors: ")
player = player.lower()
choices = ["rock", "paper", "scissors"]
computer = random.choice(choices)
if player == computer:
print("I chose " + str(computer) + " and you chose " + player + ". It's a tie!")
elif player == "rock" and computer == "scissors":
playerScore += 1
print("I chose " + str(computer) + " and you chose " + player + ". Congratulations! You won! " + player + " beats " + str(computer) + ".")
elif player == "paper" and computer == "rock":
playerScore += 1
print("I chose " + str(computer) + " and you chose " + player + ". Congratulations! You won! " + player + " beats " + str(computer) + ".")
elif player == "scissors" and computer == "paper":
playerScore += 1
print("I chose " + str(computer) + " and you chose " + player + ". Congratulations! You won! " + player + " beats " + str(computer) + ".")
elif computer == "rock" and player == "scissors":
computerScore += 1
print("I chose " + str(computer) + " and you chose " + player + ". You lost! " + str(computer) + " beats " + player + ".")
elif computer == "paper" and player == "rock":
computerScore += 1
print("I chose " + str(computer) + " and you chose " + player + ". You lost! " + str(computer) + " beats " + player + ".")
elif computer == "scissors" and player == "paper":
computerScore += 1
print("I chose " + str(computer) + " and you chose " + player + ". You lost! " + str(computer) + " beats " + player + ".")
else:
flag = True
print("Sorry, but you entered an invalid option. The game has ended. See below for the final score. Thank you for playing")
print("")
print("Your score:", str(playerScore) + ", Computer score:", str(computerScore))
return playerScore, computerScore, flag
playerFinal = 0
computerFinal = 0
while True:
player, computer, flag = rock_paper_scissors()
playerFinal += player
computerFinal += computer
print("Your score:", str(playerFinal) + ", Computer score:", computerFinal)
if flag:
break
只需在无效选择后添加break
即可。此时,播放器可以减负滚动
if player < 0
playerFinal = -1 * player
break
从以下位置更改循环条件:
while True:
至:
while True and (player+computer) != 0 :
如果用户选择无效,则该回合的得分将为0,而下一次循环将不通过该条件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.