【问题标题】:How to create guess counter in guessing game如何在猜谜游戏中创建猜测计数器
【发布时间】:2019-09-10 02:13:43
【问题描述】:

我正在尝试制作一个猜数字游戏,当你猜对数字时,它会告诉你猜了多少次。

我尝试了几个循环,但不知道如何让我的“猜测”增加。

import random

rand_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 次猜测。

【问题讨论】:

  • 您的示例代码有两个缩进问题,其中之一将else 部分中对guess_game() 的调用置于不同的级别 - Python 关心缩进,所以您也应该这样做!跨度>
  • 把猜测变量放在函数外面,它会起作用
  • 正确,我刚刚修复了缩进,以确保人们看到的是实际问题,而不仅仅是一个错字 - 答案如下。

标签: python loops


【解决方案1】:

您的代码不起作用,因为您在每次猜测后都继续调用guess_game(),实际上是在每次猜测后开始新游戏。

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

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

【讨论】:

  • 啊,这确实有道理。谢谢你。即使猜错了,如何让程序继续运行?
  • 我怎样才能给用户无穷无尽的猜测,并让猜测像“它花了你 x 个猜测”而不是“你还有 x 个猜测”那样计数
  • @ccolson4072 让人们继续猜测您可以将所有条件逻辑包装在一个while循环中,一旦他们猜对了就中断。另外,删除递归调用。
  • @DarrylG 谢谢你们。帮了很多忙,这也是我的第一个问题。
  • @MatthewGaiser 谢谢你们。帮了很多忙,这也是我前夜的第一个问题
【解决方案2】:

每次您拨打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()

【讨论】:

  • while(True) 本质上是告诉代码永远继续运行该部分。 While 本质上是一个 if 语句,但它不是一次做某事,而是重复做某事,直到它不再为真。它没有的唯一原因是因为 return 语句告诉程序在猜测正确时完全退出该函数。
【解决方案3】:

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

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()

【讨论】:

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