检查Python中的数字是否在更多或更少的范围内

时间:2013-12-10 18:21:20

标签: python python-3.x

作为练习的一部分,我是Python的新手,我正在制作一个简单的猜数游戏。我已经掌握了基础知识,但我正在尝试实现一种方式,告诉用户他们的猜测是否接近或远离正确的数字。我无法在一个范围内猜测,因为每次都会随机选择要猜测的数字。我的练习告诉我要研究abs(),但这并没有给我带来多大意义。它还提到了关于within()的内容,这对我来说也没有太大作用。如果有人可以提供帮助,只需要朝着正确的方向努力。感谢。

4 个答案:

答案 0 :(得分:4)

你必须提出意味着近或远的价值观。 它可能看起来像这样:

diff = abs(guess - random_number)
if diff >= 50:
    print("Really cold!")
elif diff >= 40:
    print("Cold.")
...
elif diff >= 5:
    print("Getting really hot!")

你可以让一个函数返回一个数字来表示它是多么热或冷(例如0到10),然后有一个看起来像这样的字典:

hot_str = {
    0: "You guessed it!",
    1: "Extremely hot!",
    10: "Frozen cold!",
    }

print(hot_str[heat(diff)])

答案 1 :(得分:1)

您可以使用operator chaining并针对您的范围的两个极端进行测试:

if lower <= number <= upper:

如果number[lower, upper]范围内(包括两端),此测试会匹配。

如果您想了解某个值与其他内容的接近程度,可以使用abs(target - guess)

distance = abs(target - guess)
if 10 <= distance <= 20:
    print('You are getting closer now!')

一系列此类测试将是乏味的;您可以根据它们与一系列测试的接近程度来打印消息:

messages = (
    (100, 'Way, way off!'),
    (80, 'So cold, are you not freezing?'),
    (60, 'Is there a light on the horizon?'),
    (40, 'Where there is warmth, there is hope!'),
    (30, 'You are getting warmer now..'),
    (20, 'Is it just me, or is it getting hot in here?'),
    (10, 'You are about to burn yourself!'),
    (0, 'Fire, ta-cha-ta, burning desire, ta-cha-ta!')
)

distance = abs(target - guess)
if distance == 0:
    print("You guessed it right!")
else:
    for target, message in messages:
        if distance > target:
            print(message)
            break

答案 2 :(得分:0)

这取决于你如何定义近距离和远距离。现在我假设让d成为参数,如果abs(guess-right_num)小于d那么它就会关闭,否则就是远

所以代码可以是:

if abs(guess-right_num) < d:
      print("close")
else:
      print("far")

答案 3 :(得分:0)

您无法使用范围直接比较您的号码和随机生成的号码,但您可以使用范围直接比较其差异

abs()可用于返回数字的正数版本,无论是正数还是负数。

abs(10)
10
abs(-10)
10

您可以使用它来确保您的随机数始终正面

你必须误读within();这是您和您的班级可以访问的内容,或者您​​误读了它的含义,因为within()不是内置函数。

现在,解决你的问题。这需要一些数学和逻辑。

您无法在范围内工作,因为该数字是随机生成的。但是你可以随时获得一部分内容并根据 进行工作。

例如,请考虑此数字行,其中随机数为10(由|表示)。

[(0)---------|---------(20)]

您始终可以将您猜测的数字除以随机数,并得到一个数字,范围从(在这种情况下)(0/10)(10/20)。在所有情况下,当number_guessed == number_generated时,除法运算中计算的数字将等于1

我让你弄清楚这个的实现,但基本的概念是你可以根据你与数字1的距离来确定你与数字的接近程度。

这也不完美,但如果你做得对,这是一种有趣而聪明的方式,可能会引起教授的注意。