2012-01-27 4 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 деление - с плавающей запятой. * edit: *, чтобы сделать его совместимым, используйте оператор '//' для деления вместо '/'. – FakeRainBrigand

+0

Humm ... Это сработало! Я собираюсь попробовать в обоих направлениях. Смотрите, как лучше. Спасибо за помощь! XD –

+0

@ThiG. Я полагаю, что оба работают, но обычно путь без преобразования строк должен быть быстрее. – phimuemue

2

Изменить

number = 321 

в

number = str(321) 
1

Попробуйте print 'Hundreds:', str(number)[-3] if number >= 100 else '0'

+0

Чтобы получить сотни он должен быть 'Обл (число) [0]'. –

+0

@RikPoggi: Истинный. Думаю, я просто перенес такую ​​же ошибку из вопроса. Фактически использование 'str (number) [- 3]' может быть лучше, если вы не знаете, сколько цифр в номере (проверяя длину, чтобы убедиться, что, по крайней мере, три, конечно). –

+0

(+1) Правильно, это даже лучше! –

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] 
Смежные вопросы