2012-01-27 54 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] 
相关问题