如何解决猜谜游戏

时间:2019-09-22 15:57:25

标签: python input

目标是创建一个简单的程序,生成一个介于1到100之间的数字,然后它将要求用户猜测这个数字,如果他们猜测超出数字范围,它将告诉他们再次猜测,如果不是,应该告诉他们他们的猜测是太高还是太低,促使他们再次猜测。一旦他们确实猜出正确的数字,它就会告诉他们他们已经赢了,并且告诉他们正确猜对的尝试次数。

这是我到目前为止所拥有的

import random   

def play_game():
    number = random.randint(1, 100)
    print("Guess a number between 1 and 100 inclusive.")
    count = 1
    while True:
        guess = int(input("Your guess: "))

    if guess > 0 and guess <= 100:
        #the age is valid
        return play_game
    else:
        print("Invalid number.")
        return play_game()

        if guess < number:
            print("Too low.")
        elif guess > number:
            print("Too high.")
        elif guess == number:
            print("You won! You guessed it in " + str(count) + " tries.\n")
            return
        count+=1
play_game()

我目前遇到的问题是,当检查他们的猜测是否在1-100之间时,而不是继续进行天气测试,或者他们的数字是否太低或太低,它会一直循环。

如果有人可以帮助我解决此问题并总体上检查代码,我将不胜感激。

3 个答案:

答案 0 :(得分:0)

我认为问题在于流程中存在一些缩进和逻辑问题。 当您从游戏内部调用play_game()时,它将启动一个完全不同的游戏 具有不同的random_number。

满足您条件的良好代码可能如下所示

import random   

def play_game():
    number = random.randint(1, 100)
    print("Guess a number between 1 and 100 inclusive.")
    count = 1
    while True:
        guess = int(input("Your guess: "))
        if guess > 0 and guess <= 100:
            if guess < number:
                print("Too low.")
            elif guess > number:
                print("Too high.")
            elif guess == number:
                print("You won! You guessed it in " + str(count) + " tries.\n")
                return
            count+=1
        else:
            print("Invalid number.")

play_game()

答案 1 :(得分:0)

您可以重新调整代码:
1.如果没有在范围内,进行高,低,匹配检查
2.如果猜测与否相符则中断

import random

def play_game():
    number = random.randint(1, 100)
    print("Guess a number between 1 and 100 inclusive.")
    count = 0
    while True:
        count += 1
        guess = int(input("Your guess: "))
        if guess > 0 and guess <= 100:
            #the age is valid
            if guess < number:
                print("Too low.")
            elif guess > number:
                print("Too high.")
            elif guess == number:
                print("You won! You guessed it in " + str(count) + " tries.\n")
                break
        else:
            print("Invalid number, try again")
play_game()

答案 2 :(得分:0)

您遇到的问题是由于缩进不正确。检查数字是否在有效范围内的if-else语句与while循环处于相同的缩进级别,因此不在其中执行。只需缩进即可解决问题。 此外,您在不带括号的情况下调用了play_game,从而使函数调用的语法不正确。但是,与其检查数字是否大于0且小于100,不如检查数字是否小于0或大于100,这是最佳选择,如果是这种情况,请打印无效数字并调用play_game()。 看起来像这样:

while True:
    if guess < 0  and guess > 100:
        print ("Invalid number.")
        return play_game()

其余的代码看起来不错。我还将链接附加在Python文档here.

的缩进部分中