首页 > 解决方案 > 如何解决猜谜游戏

问题描述

目标是创建一个简单的程序,生成一个介于 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 之间,而不是继续看天气,或者他们的数字是否太低或太低时,它会停留并循环。

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

标签: pythoninput

解决方案


我认为问题在于流程中的一些缩进和一些逻辑问题。当您从游戏内部调用 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()

推荐阅读