簡體   English   中英

檢查數字是否在Python中或多或少的范圍內

[英]Checking if number is within more or less range in Python

在做一個簡單的數字猜謎游戲時,我是Python的新手。 我已經介紹了基礎知識,但是我正在嘗試實現一種方法,該方法告訴用戶他們的猜測是接近還是接近正確的數字。 我無法在一個范圍內進行猜測,因為每次都會隨機選擇要猜測的數字。 我的練習告訴我要研究abs(),但這並沒有給我太大的意義。 它還提到了有關inner()的內容,這對我沒有多大幫助。 如果有人可以提供幫助,只需向正確的方向推進即可。 謝謝。

您必須提出意味着相近或相近的值。 它可能看起來像這樣:

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),然后有一個如下所示的dict:

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

print(hot_str[heat(diff)])

您可以使用運算符鏈接並針對范圍的兩個極端進行測試:

if lower <= number <= upper:

如果number[lower, upper]范圍內(包括兩端) [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

這取決於您如何定義近距離和遠距離。 現在,我假設讓d為參數,如果abs(guess-right_num)小於d則它接近,否則就很遠

因此代碼可以是:

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

您不能使用范圍直接比較您的數字和隨機生成的數字,但是可以使用范圍直接比較它們的差異

無論數字是正數還是負數, abs()均可用於返回數字的正數形式。

abs(10)
10
abs(-10)
10

您可以使用它來確保您的隨機數始終為

您一定是誤解了inner within() 這可能是您和您的班級只能訪問的東西,或者您誤讀了它的含義,因為within()不是內置函數。

現在,解決您的問題。 這需要一點數學和邏輯。

您無法在一定范圍內工作,因為該數字是隨機生成的。 但你總是可以讓他們和工作的基礎上一個百分比。

例如,考慮以下數字行,其中隨機數為10(由|表示)。

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

您將始終能夠將您猜測的數字除以隨機數,並得到一個介於(在這種情況下) (0/10)(10/20) 在所有情況下,當number_guessed == number_generated ,在除法運算中計算出的數字將等於1

我讓您找出實現的方法,但是基本概念是,您可以根據距數字1距離來確定距數字的距離。

這也不是完美的,但是如果您做對的話,這可能是一種有趣且聰明的方法,可能會引起教授的注意。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM