簡體   English   中英

如何在Python中停止此循環?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM