【问题标题】:How can I get the Nth digit of a number from right to left? [duplicate]如何从右到左获取数字的第 N 位? [复制]
【发布时间】:2018-08-28 15:55:37
【问题描述】:

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

【问题讨论】:

  • 你能发布一些你迄今为止尝试过的代码吗?你有一些示例输入/输出吗?
  • 假设号码是 1234.567。它的第 4 位数是多少?还是保证数字是整数?
  • 您可以从here 获取逻辑,它大约是左起第 n 位。您可以根据自己的情况进行修改。
  • 虽然副本是问如何从左数而不是从右数,但第二个答案实际上是从右数,接受的可以从任意一边数(只是否定的问题索引),所以我认为你最好的答案都在那里。

标签: python numbers digit


【解决方案1】:

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

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

【讨论】:

  • 这将如何处理 123.456?我们应该清除特殊字符吗?
  • 取决于 OP 的要求。如果你只是想跳过它,你可以过滤掉它。
【解决方案2】:

如果你的数字是整数,你可以用整数除法和取模来计算它:

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

【讨论】:

  • 假设数字是一个正(实际上是非负)整数
  • 这为负输入提供了一些非常奇怪的结果。
  • @PatrickHaugh, RoyShahaf:没错,我有点太快地认为我正在处理正整数。已更正!
【解决方案3】:

这是一种方法,假设您在谈论整数和十进制:

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

【讨论】:

    【解决方案4】:

    转换为字符串,反转字符串,然后取字符串的索引,将字符串转换回整数。这有效:

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

    让我知道这是否适合你!

    【讨论】:

      【解决方案5】:

      转换为字符串,反转字符串,然后取字符串的索引,将字符串转换回整数。这有效:

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

      让我知道这是否适合你!

      【讨论】:

      • 如果他们只想要最右边的数字,他们可以只需要%10。他们要求第 n 个数字。
      猜你喜欢
      • 2015-09-20
      • 1970-01-01
      • 1970-01-01
      • 2018-04-01
      • 2021-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-26
      相关资源
      最近更新 更多