2011-03-10 17 views
17

有沒有辦法獲得號碼的最後一位數字。我試圖找到以「1」結尾的變量,如1,11,21,31,41等。如何檢查號碼的最後一位數

如果我使用文本變量我可以簡單地把

print number[:-1] 

,但它的工作原理。用文本變量(如「你好),但不能與數字與數字我得到這個錯誤:

TypeError: 'int' object is not subscriptable 

我想看看有沒有更好的辦法來處理數字這樣,我知道解決辦法是轉換爲一個字符串,然後執行上面的命令,但我試圖看看是否有另一種方式我錯過了。

在此先感謝這麼多...

回答

22

餘除以10,如果作爲

numericVariable % 10 

這隻適用於正數。 -12%10個收率8

14

使用模運算符,用10:

num = 11 
if num % 10 == 1: 
    print 'Whee!' 

除以10時,這將始終是最後一個數字(當數爲正)這給出了其餘部分。

+5

請注意,這將不會如預期的那樣發揮作用:('-3%10 == 7') – cobbal 2011-03-10 02:38:29

+2

@cobbal:好點。在這種情況下,您可以先取絕對值:'abs(num)%10' – Cameron 2011-03-10 02:40:18

10

所以你想要訪問一個整數中的數字,就像列表中的元素一樣;我能想到的最簡單的方法是:

n = 56789 
lastdigit = int(repr(n)[-1]) 
# > 9 

轉換ň成一個字符串,訪問最後一個元素,然後使用int構造函數轉換回整數。

對於一個浮點數:

n = 179.123 
fstr = repr(n) 
signif_digits, fract_digits = fstr.split('.') 
# > ['179', '123'] 
signif_lastdigit = int(signif_digits[-1]) 
# > 9 
+5

我剛剛意識到使用repr(n)代替str(n)好像使用某些數字類型化字符串可能會失去準確性。 不知道爲什麼,但我剛剛看到它發生在玩浮點數時。 – 2011-10-17 22:33:04

0

我不能添加評論,但我想要迭代和擴大在什麼吉姆·加里森說除以10,

餘時,如 numericVariable%10

這隻適用於正數。 -12%10產量8

雖然模量(%)按照預期工作,但在此情況下使用絕對值來使用模量。

abs(numericVariable) % 10 
0

通過使用迭代和「數字」的內置函數,該數字被視爲二進制,因此它從後向前。以下是一些代碼示例。

for digit in binary: 
    denary= denary*2 + int(digit) 
相關問題