Python 如何从右到左获取数字的第n位?

Python 如何从右到左获取数字的第n位?,python,numbers,digit,Python,Numbers,Digit,当第一个数字位于数字的最右边时,如何获取数字的第n个数字?我在python上这样做。您可以将数字转换为字符串,然后使用负索引从末尾访问特定数字: >>> num = 123456 >>> n = 3 >>> str(num)[-n] '4' 您可以将数字转换为字符串,然后使用负索引从末尾访问特定数字: >>> num = 123456 >>> n = 3 >>> str(num)[-n]

当第一个数字位于数字的最右边时,如何获取数字的第n个数字?我在python上这样做。

您可以将数字转换为字符串,然后使用负索引从末尾访问特定数字:

>>> num = 123456
>>> n = 3
>>> str(num)[-n]
'4'

您可以将数字转换为字符串,然后使用负索引从末尾访问特定数字:

>>> num = 123456
>>> n = 3
>>> str(num)[-n]
'4'

如果您的数字是整数,则可以使用整数除法和模运算:

def nth_digit(number, digit):
    return abs(number) // (10**(digit-1)) % 10

nth_digit(4321, 1)
# 1
nth_digit(4321, 2)
# 2
如果我们再往左走,数字应该是0:

nth_digit(4321, 10)
# 0

如果您的数字是整数,则可以使用整数除法和模运算:

def nth_digit(number, digit):
    return abs(number) // (10**(digit-1)) % 10

nth_digit(4321, 1)
# 1
nth_digit(4321, 2)
# 2
如果我们再往左走,数字应该是0:

nth_digit(4321, 10)
# 0

转换为字符串,反转该字符串,然后获取该字符串的索引并将该字符串转换回整数。这项工作:

def nth_digit(digit, n):
  digit = str(digit)
  return int(digit[::-1][n])
def nth_digit(digit, n):
   digit = str(digit)
   return int(digit[::-1][n])

让我知道这是否适合你

转换为字符串,反转字符串,然后获取字符串的索引并将字符串转换回整数。这项工作:

def nth_digit(digit, n):
  digit = str(digit)
  return int(digit[::-1][n])
def nth_digit(digit, n):
   digit = str(digit)
   return int(digit[::-1][n])

让我知道这是否适合你

这里有一种方法,假设你谈论的是整数和十进制:

def extract_digit(n, number):

    number = abs(number)

    for x in range(n-1):
        number = number // 10 #integer division, removes the last digit

    return number % 10

这里有一种方法,假设您讨论的是整数和十进制:

def extract_digit(n, number):

    number = abs(number)

    for x in range(n-1):
        number = number // 10 #integer division, removes the last digit

    return number % 10

转换为字符串,反转该字符串,然后获取该字符串的索引并将该字符串转换回整数。这项工作:

def nth_digit(digit, n):
  digit = str(digit)
  return int(digit[::-1][n])
def nth_digit(digit, n):
   digit = str(digit)
   return int(digit[::-1][n])

让我知道这是否适合你

转换为字符串,反转字符串,然后获取字符串的索引并将字符串转换回整数。这项工作:

def nth_digit(digit, n):
  digit = str(digit)
  return int(digit[::-1][n])
def nth_digit(digit, n):
   digit = str(digit)
   return int(digit[::-1][n])


让我知道这是否适合你

你能发布一些你到目前为止尝试过的代码吗?您有一些输入/输出示例吗?假设数字是1234.567。它的第四位数是多少?或者这个数字一定是整数吗?你可以从中得到逻辑,从左起大约是第n位。你可以为你的案例修改相同的答案。虽然重复的答案是询问如何从左边而不是右边计数,但第二个答案实际上是从右边计数,而被接受的答案可以从任何一边计数(这只是一个负索引问题),所以我认为你最好的答案都在那里。你能发布一些你迄今为止尝试过的代码吗?您有一些输入/输出示例吗?假设数字是1234.567。它的第四位数是多少?或者这个数字一定是整数吗?你可以从中得到逻辑,从左起大约是第n位。你可以为你的案例修改相同的答案。虽然重复的答案是问如何从左边而不是右边计数,但第二个答案实际上是从右边计数,而被接受的答案可以从任何一边计数(这只是一个负索引的问题),所以我认为你最好的答案都在那里。假设数字是正的(实际上是非负的)整数这为负输入提供了一些非常奇怪的结果。@PatrickHaugh,Royshahaff:没错,我有点太快地假设我处理的是正整数。更正!假设数字是正的(实际上是非负的)整数这为负输入提供了一些非常奇怪的结果。@PatrickHaugh,Royshahaaf:没错,我有点太快地假设我处理的是正整数。更正!这将如何处理123.456?我们应该清除特殊字符吗?取决于OP的要求。如果你只想跳过它,你可以输入。123.456如何处理?我们应该清除特殊字符吗?取决于OP的要求。如果你只想跳过它,你可以过滤掉。如果他们只想要最右边的数字,他们可以只
%10
。他们要求第n个数字。如果他们只想要最右边的数字,他们可以<代码>%10。他们要求输入第n个数字。