【问题标题】:How can I ask the player if they want to replay my Python3 terminal number guessing game? [duplicate]如何询问玩家是否想重玩我的 Python3 终端号码猜谜游戏? [复制]
【发布时间】:2020-01-31 08:58:57
【问题描述】:

我的猜数字游戏有一个几乎可以使用的代码。当询问玩家是否想再次玩并且他们输入“是”时,它运行完全正常,直到最后 - 终端输出:

Ha ha. You took too many guesses! I win! ^__^
Would you like to play again? (yes/no) yes
I'm thinking of a number between 1 and 99!
Ha ha. You took too many guesses! I win! ^__^
Would you like to play again? (yes/no) 

我想把整个程序放在一个 while 循环中,但我在游戏中有几个开放性问题应该只在他们第一次运行程序时被问到,而不是每次他们想重玩游戏时问。 (例如你叫什么名字?你想玩吗?)我不知道如何重新运行程序,但在最初的问题之后开始。使用我当前的代码,当玩家在结尾输入“是”以重玩游戏时,我不知道要写什么。

import random
import sys

guesses_taken = 0
number = random.randint(1, 99)

name = input("\nHello, what's your name? ")
print(f"\nNice to meet you, {name}.")

answer = input("Would you like to play a guessing game? (yes/no) ").lower()

while True:
    if answer == "no":
        print("\nToo bad, goodbye!\n") 
        sys.exit()
    elif answer == "yes":
        print(f"\nOkay, let's play!")
        break
    else:
        print("\nSorry, I didn't get that.")

while True:

    print("\nI'm thinking of a number between 1 and 99!")

    while guesses_taken < 6:
        guess = input("Take a guess: ")

        guesses_taken += 1

        if int(guess) > number:
            print("\nYour guess is too high!\n")
        elif int(guess) < number:
            print("\nYour guess is too low!\n")
        else:
            print("\nArgh..you guessed my number! You win! -__-")
            break

    while guesses_taken >= 6:
        print("\nHa ha. You took too many guesses! I win! ^__^")
        break

    again = input("\nWould you like to play again? (yes/no) ")
    if again == "no":
        break

sys.exit()

【问题讨论】:

  • 我也尝试定义一个函数并在最后调用该函数,但它对我不起作用并一直说该函数未定义。

标签: python python-3.x while-loop terminal user-input


【解决方案1】:

变量guesses_takennumber 在重玩时都将保留它们的值,这使得游戏不是很有趣。你需要做一些事情来改变它,比如 -

    again = input("\nWould you like to play again? (yes/no) ")
    if again == "no":
        break
    else:
        guesses_taken = 0
        number = random.randint(1, 99)

函数等可以使代码更简洁,但这是使事情正常运行所需的最小更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-10
    • 1970-01-01
    相关资源
    最近更新 更多