2012-01-27 56 views
1

我試圖在python中提出一個算法,要求您插入一個數字,然後從插入的數字打印出數百,數十和單位。Python - 從一個整數中提取一個字符

我想要做的是從與數百對應的數字中提取字符,並將其打印爲數百個以及幾十個單位。

舉例來說,我已經試過到目前爲止做的是:

number = 321 
print 'Hundreds: ', number[1] 

然而,當我試圖運行的是,我得到的消息:

TypeError: 'int' object is not subscriptable 

是不可能做我想要的東西?

回答

4

嘗試str(number)[1]。您首先必須將數字轉換爲字符串。

請注意,這不是最優雅的解決方案。您可能想嘗試使用(number // 100)%10。因此,number必須是int//表示整數除法。

+2

整數除法是最好的解決方案。對於數百個,除以100,然後模10(你的代碼得到10個位置)。這僅適用於Python 2.x。在3.x中,除法是浮點數。 *編輯:*使它向前兼容,使用'//'運算符來代替'/'。 – FakeRainBrigand 2012-01-27 14:53:45

+0

Humm ...這工作! 雖然我會嘗試兩種方式。看哪一個更好。 Thaks的幫助! XD – 2012-01-27 15:09:45

+0

@ThiG。我想這兩個工作,但通常沒有字符串轉換的方式應該更快。 – phimuemue 2012-01-27 15:25:46

2

變化

number = 321 

number = str(321) 
1

嘗試print 'Hundreds:', str(number)[-3] if number >= 100 else '0'

+0

要獲得數百應該是'STR(數字)[0]'。 – 2012-01-27 15:05:55

+0

@RikPoggi:是的。我想,我只是從這個問題上繼承了同樣的錯誤。實際上,如果您不知道數字中有多少數字(檢查長度以確保至少有三個數字),使用'str(number)[ - 3]'可能會更好。 – 2012-01-27 15:07:45

+0

(+1)對,這樣更好! – 2012-01-27 15:24:28

2

你必須做出一個字符串第一,嘗試...

str(number)[1]

-1
print 'Hundereds: ', str(number // 100)[-1] 
print 'Tens: ', str(number // 10)[-1] 
print 'Ones: ', str(number)[-1] 
0

你應該整數轉換成字符串之前:

number = 321 
s = str(number) 
hundreds = s[0] 
相關問題