2017-08-18 83 views
-6

只是爲了澄清,我使用Python 2.7如何測試一個數字是一個整數還是小數點後只有一個零的浮點數?

我需要檢查,如果「x」是(例如7),或者如果一個整數「x」是僅具有零的浮子在的端部十進制(例如7.0)。我有一個格式,所以我需要幫助的是代碼。

x = raw_input("Please enter a number: ") 

    if type(x) == int or __________ : 
     return True 
    else: 
     return False 

我的目標是,如果你在5或5.0插件,它將返回true,但你在6.7插件,它會返回False。

下劃線(空格)是我需要添加代碼的地方。我嘗試了許多不同的嘗試,但都失敗了。

+0

「我有一個格式,因此我需要的是代碼。」第1步:編寫代碼 –

+0

但我不知道代碼。 – Alex

+1

步驟1:學習編碼 –

回答

1

一個非常簡單的測試,其工作因爲Python整數分辨率是無限的:

return float(x) == int(float(x)) 

raw_input結果是不是一個數字,它是一個字符串。這就是爲什麼它必須首先轉換爲float

+0

究竟是什麼的INT(x)的呢? – Alex

+4

你準備什麼代碼學院課程? –

+0

@Alex它將'x'轉換爲等價的整數。如果'x'是一個浮點數,它將被截斷。 –

1

假設有一個值,R,這是一個浮/實數,

r = 3.33333 

然後下面的值是非零當r爲浮點值/實際(非整數),

f = r - int(r) 
print r -int(r) 

但是,正則表達式可以是更通用的解決方案,因爲你可以搜索匹配\ d * \ 0 * [1-9] {1}作爲浮子,和\ d +。?0 *被解釋作爲整數。

+0

謝謝!真的有幫助! – Alex

+1

「正則表達式會是更好的解決方案」?爲了檢查數字是否是整數?開玩笑吧。正則表達式比一些基本的數學運算速度慢,可讀性差,更容易出錯。你用你的兩個正則表達式不情願地證明了這一點:int模式將匹配_any_單個字符的字符串,並且你的float模式將匹配像「a1」這樣的字符串。 –

+0

對不起,我不明白 – Alex

5

嗯,如果只是彩車有一個像「is_integer」的方法...

相關問題