【问题标题】:Python: Guessing a number is User's mindPython:猜数字是用户的想法
【发布时间】:2022-11-24 07:34:26
【问题描述】:

我被 Python 简介课程中的一个问题困住了。我必须编写一段代码,其中用户在脑海中保留一个整数,然后由计算机进行猜测。如果用户的数字大于计算机的猜测,则用户键入“+”,计算机猜测的数字更高。如果用户的数字较小,则用户键入“-”,计算机会猜测较小的数字。如果计算机猜对了,用户输入“y”,程序结束。

使用内置函数“input”从用户那里获取文本。如果用户键入“+”、“-”或“y”以外的任何内容,该函数应抛出异常。

您的函数不应该接受任何参数并且不返回任何内容。

我必须用 python 编写代码。

我面临的问题是,在第一次检查输入后,如何更改范围并让用户再次输入他们的响应。我刚刚开始编码,所以如果这是一个非常基本的问题,请原谅我。

【问题讨论】:

标签: python


【解决方案1】:

我遇到了与您相同的问题,这是我的解决方案:

import random


low = 1
high = 100

int(input("Enter the number for computer to guess: "))


while low != high:
    guess = low + (high - low) // 2
    high_low = input(f"Computer guess is: {guess} 
 "
    f"Press (H) for  higher, (L) for lower and (C) for correct: ").casefold()

    if high_low == "h":
        low = guess + 1

    elif high_low == "l":
        high = guess - 1

    elif high_low == "c":
        print(f"I got it the number is {guess}")
        break
    else:
        print("Please enter h, l or c")
else:
    print(f"Your number is {low}")

在这里,我使用带有公式的二进制搜索算法:guess = low + (high - low) // 2。更清楚地说,这个公式的作用是从猜测高值和低值之间的中点开始。如果我们被告知要猜得更高,那一定意味着我们的答案必须在 50 - 100 之间。所以它的最低可能是 51,这是我们新的范围的最低值,现在中点变成 51+(100-51)/ /2(此计算的答案是 75.5 整数除法向下舍入)所以结果是 75。如果我们现在被告知要猜测得更低,这意味着答案必须介于 51 和 75 之间,所以我们知道答案小于 75,中点现在变成 50+(75-51)//2 这是 62,依此类推。你可以用+改变H,用-改变L,用y改变C,你就会得到你的解决方案。希望这个对你有帮助 :)。

【讨论】:

    【解决方案2】:

    这里有几种解决方案,有些比其他的更复杂。

    在我看来,最简单的解决方案就是这样(没有验证):

    if user_input == "+":
        number = number + 1
    elif user_input == "-":
        number = number - 1
    elif user_input = "y":
        print("Number guessed correctly.")
    

    根据用户输入,程序将简单地从数字中加或减 1。这样,您就不需要范围检查或类似的东西。

    让我知道这种方法是否可以接受。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    • 2019-01-03
    相关资源
    最近更新 更多