Как взять n-ю цифру числа в python
Я хочу взять n-ю цифру из N-значного числа в python. Например:
number = 9876543210
i = 4
number[i] # should return 6
Как я могу сделать что-то подобное в python? Должен ли я сначала изменить его на строку и затем изменить его на int для вычисления?
Ответы
Ответ 1
Сначала обработайте число как строку
number = 9876543210
number = str(number)
Затем, чтобы получить первую цифру:
number[0]
Четвертая цифра:
number[3]
EDIT:
Это вернет цифру как символ, а не как число. Чтобы преобразовать его обратно, используйте:
int(number[0])
Ответ 2
Вы можете сделать это с помощью методов целочисленного деления и останова
def get_digit(number, n):
return number // 10**n % 10
get_digit(987654321, 0)
# 1
get_digit(987654321, 5)
# 6
//
выполняет целочисленное деление на 10 единиц, чтобы перевести цифру в одну позицию, затем %
получает остаток после деления на 10. Обратите внимание, что нумерация в этой схеме использует нулевое индексирование и начинается с правой стороны от номера.
Ответ 3
Хорошо, во-первых, используйте функцию str() в python, чтобы превратить "число" в строку
number = 9876543210 #declaring and assigning
number = str(number) #converting
Затем получите индекс, 0 = 1, 4 = 3 в индексной нотации, используйте int(), чтобы превратить его в число
print(int(number[3])) #printing the int format of the string "number" index of 3 or '6'
если вам нравится в краткой форме
print(int(str(9876543210)[3])) #condensed code lol, also no more variable 'number'
Ответ 4
Я бы порекомендовал добавить булевскую проверку для величины числа. Я конвертирую большое значение в миллисекундах в дату и время. У меня есть числа от 2 до 200 000 200, поэтому 0 - это правильный вывод. Функция, которая есть у @Chris Mueller, вернет 0, даже если число меньше 10 ** n.
def get_digit(number, n):
return number // 10**n % 10
get_digit(4231, 5)
# 6
def get_digit(number, n):
if number - 10**n < 0:
return False
return number // 10**n % 10
get_digit(4321, 5)
# False
Вы должны быть осторожны при проверке логического состояния этого возвращаемого значения. Чтобы разрешить 0 в качестве допустимого возвращаемого значения, вы не можете просто использовать if get_digit:
Вы должны использовать, if get_digit is False:
чтобы 0
действовал как ложное значение.