Как взять 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 действовал как ложное значение.