为了账号安全,请及时绑定邮箱和手机立即绑定

如何在猜谜游戏中创建猜测计数器

如何在猜谜游戏中创建猜测计数器

慕尼黑8549860 2022-05-24 13:10:16
我正在尝试制作一个数字猜谜游戏,当你猜对数字时,它会告诉你猜了多少次。我已经尝试了几个循环,但无法弄清楚如何让我的“猜测”增加。import randomrand_num = random.randrange(1,201)def guess_game():    guess = int(input("Please enter your guess: "))    guesses = 1    if guess == rand_num:        print("Hit!\nIt took you " + str(guesses) + " guesses!")    elif guess < rand_num:        print("Your guess is too low.")        guesses = guesses + 1        guess_game()    else:        print("Your guess is too high")        guesses = guesses + 1        guess_game()guess_game()例如,所需的输出应该是这样的:"Hit! It took you 5 guesses"但无论尝试了多少次,它都只说 1 次猜测。
查看完整描述

3 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

您的代码不起作用,因为您guess_game()在每次猜测后继续调用,每次猜测后有效地开始新游戏。

当用户最终正确猜测时,它总是在该新游戏中的 1 次猜测之后,然后所有游戏立即结束,但代码永远不会到达在任何这些游戏中多次猜测后打印数字的行。

有很多不同的方法可以解决这个问题,但这里的主要问题是(像许多新程序员一样)你没有意识到调用函数不仅让程序跳转到你的新代码,它还为你创造了一个全新的空间。要工作的程序(对函数的每次调用都有自己的“作用域”)并在函数完成后从该程序返回,在大多数情况下之前的作用域不变。


查看完整回答
反对 回复 2022-05-24
?
Qyouu

TA贡献1786条经验 获得超11个赞

每次你打电话guess_game(),你基本上是在重置游戏。


相反,您希望将游戏封闭在一个while循环中,该循环仅在游戏结束时退出。我在这里为您编写了一个工作版本:


import random

rand_num = random.randrange(1,201)

def guess_game():

    guesses = 1

    while(True):

        guess = int(input("Please enter your guess: "))

        if guess == rand_num:

            print("Hit!\nIt took you " + str(guesses) + " guesses!")

            return 0

        elif guess < rand_num:

            print("Your guess is too low.")

            guesses = guesses + 1

        else:

            print("Your guess is too high")

            guesses = guesses + 1


guess_game()


查看完整回答
反对 回复 2022-05-24
?
函数式编程

TA贡献1807条经验 获得超9个赞

您的代码运行不正常,因为guesses=1当您调用函数本身(递归)时,您在函数中进行了初始化,变量guess 的值被重置。


import random    

rand_num = random.randrange(1,201)


guesses=0 #initialize it outside function



def guess_game():

    guess = int(input("Please enter your guess: "))

    global guesses 

    guesses+=1

    if guess == rand_num:

        print("Hit!\nIt took you " + str(guesses) + " guesses!")

    elif guess < rand_num:

        print("Your guess is too low.")

        guess_game()

    else:

        print("Your guess is too high")

        guess_game()


guess_game()


查看完整回答
反对 回复 2022-05-24
  • 3 回答
  • 0 关注
  • 106 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信