Python 如何修复猜谜游戏

Python 如何修复猜谜游戏,python,input,Python,Input,目标是创建一个简单的程序,生成一个介于1和100之间的数字,然后它会要求用户猜测这个数字,如果他们猜测超出了数字范围,它应该告诉他们再次猜测,如果没有,它应该告诉他们猜测是太高还是太低,提示他们再次猜测。一旦他们猜到了正确的数字,它应该告诉他们他们赢了,以及他们正确猜到的尝试次数 这是我到目前为止所拥有的 import random def play_game(): number = random.randint(1, 100) print("Guess a number

目标是创建一个简单的程序,生成一个介于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()
随机导入
def play_game():
number=random.randint(1100)
打印(“猜测一个介于1和100之间的数字。”)
计数=1
尽管如此:
guess=int(输入(“您的猜测:”)
如果猜测>0且猜测数字:
打印(“太高”)
elif guess==数字:
打印(“您赢了!您在“+str(count)+”尝试中猜到了。\n”)
返回
计数+=1
玩游戏
我目前遇到的问题是,当它检查他们的猜测是否在1-100之间,而不是继续看天气,他们的数字是否太多或太低,它会保持并循环


如果有人能帮我解决这个问题,并对代码进行总体审查,我将不胜感激。

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

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

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()
随机导入
def play_game():
number=random.randint(1100)
打印(“猜测一个介于1和100之间的数字。”)
计数=1
尽管如此:
guess=int(输入(“您的猜测:”)
如果猜测>0且猜测数字:
打印(“太高”)
elif guess==数字:
打印(“您赢了!您在“+str(count)+”尝试中猜到了。\n”)
返回
计数+=1
其他:
打印(“无效数字”)
玩游戏

您可以重新调整代码:
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()
随机导入
def play_game():
number=random.randint(1100)
打印(“猜测一个介于1和100之间的数字。”)
计数=0
尽管如此:
计数+=1
guess=int(输入(“您的猜测:”)
如果猜测>0且猜测数字:
打印(“太高”)
elif guess==数字:
打印(“您赢了!您在“+str(count)+”尝试中猜到了。\n”)
打破
其他:
打印(“无效号码,请重试”)
玩游戏

您遇到的问题是因为缩进不正确。检查数字是否在有效范围内的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()
为True时:
如果guess<0且guess>100:
打印(“无效数字”)
返回play_game()

代码的其余部分看起来不错。我还附加了Python文档缩进部分的链接

当nos在
[01100]
中时,您希望程序做什么?老实说,我不知道,这只是我们在课堂上编写的代码,应该在家里完成,我几乎不懂python中的任何东西,现在让你的条件独占不包含,抛开else语句和它下面的两行,把缩进严重的块移到左边,应该这样做。