【问题标题】:Last 2 digits of an integer? Python 3整数的最后2位?蟒蛇 3
【发布时间】:2017-05-30 14:35:18
【问题描述】:

使用我的代码,我想获取整数的最后两位。但是当我将 x 设为正数时,它将取前 x 位,如果是负数,则会删除前 x 位。

代码:

number_of_numbers = 1
num = 9
while number_of_numbers <= 100:
  done = False
  num = num*10
  num = num+1
  while done == False:
    num_last = int(repr(num)[x])
    if num_last%14 == 0:
      number_of_numbers = number_of_numbers + 1
      done = True
    else:
      num = num + 1
print(num)

【问题讨论】:

  • 只要abs(num) % 100

标签: python python-3.x integer


【解决方案1】:

提取数字的最后两位数字的更简单方法(效率较低)是将数字转换为str,然后对数字的最后两位数字进行切片。例如:

# sample function
def get_last_digits(num, last_digits_count=2):
    return int(str(num)[-last_digits_count:])
    #       ^ convert the number back to `int`

或者,您可以通过使用取模 % 运算符来实现它(更高效),(要了解更多信息,请查看 How does % work in Python?)为:

def get_last_digits(num, last_digits_count=2):
    return abs(num) % (10**last_digits_count)
    #       ^ perform `%` on absolute value to cover `-`ive numbers

示例运行:

>>> get_last_digits(95432)
32
>>> get_last_digits(2)
2
>>> get_last_digits(34644, last_digits_count=4)
4644

【讨论】:

  • 转换操作很昂贵。如果有更简单的方法,为什么要这样做?
  • @Shiva:现在我已经明确提到转换效率较低。 Converison 的实现更简单至少根据我
【解决方案2】:

为什么不提取数模100的绝对值呢?也就是说,使用

 abs(num) % 100 

提取最后两位数?

在性能和清晰度方面,这种方法很难被击败。

【讨论】:

    【解决方案3】:

    要获得num 的最后 2 位数字,我会使用 1 行简单的 hack:

    str(num)[-2:]
    

    这将给出一个字符串。 要获得一个 int,只需用 int 包装:

    int(str(num)[-2:])
    

    【讨论】:

      【解决方案4】:

      获取整数的最后 2 位。

      a = int(input())
      print(a % 100)
      

      【讨论】:

        【解决方案5】:

        你可以试试这个:

        float(str(num)[-2:])

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-11-02
          • 2022-06-17
          • 2017-02-24
          • 2019-04-14
          • 2010-10-27
          相关资源
          最近更新 更多