如何查看号码的最后一位数字

Los*_*oul 22 python

有没有办法得到一个数字的最后一位数.我试图找到以"1"结尾的变量,如1,11,21,31,41等.

如果我使用文本变量,我可以简单地说

print number[:-1] 
Run Code Online (Sandbox Code Playgroud)

但它适用于带有文本的变量(如"hello")但不适用于数字.对于数字,我收到此错误:

TypeError: 'int' object is not subscriptable
Run Code Online (Sandbox Code Playgroud)

我试图看看是否有更好的方法以这种方式处理数字.我知道一个解决方案是转换为一个字符串,然后执行上面的命令,但我试图看看是否有另一种我错过的方式.

非常感谢提前...

Jim*_*son 36

除以10时的余数,如

numericVariable % 10
Run Code Online (Sandbox Code Playgroud)

这仅适用于正数.-12%10收益率8


Cam*_*ron 15

使用模数运算符10:

num = 11
if num % 10 == 1:
    print 'Whee!'
Run Code Online (Sandbox Code Playgroud)

这给出了除以10时的余数,它总是最后一位数(当数字为正数时).

  • 请注意,这不会像预期的那样起作用:(`-3%10 == 7`) (5认同)
  • @cobbal:好点.在这种情况下,您可以先取绝对值:`abs(num)%10` (2认同)

Zv_*_*oDD 12

所以你想要访问整数中的数字,如列表中的元素; 我能想到的最简单的方法是:

n = 56789
lastdigit = int(repr(n)[-1])
# >  9
Run Code Online (Sandbox Code Playgroud)

n转换为字符串,访问最后一个元素,然后使用int构造函数将其转换回整数.

对于浮点数:

n = 179.123
fstr = repr(n)
signif_digits, fract_digits = fstr.split('.')
# >  ['179', '123']
signif_lastdigit = int(signif_digits[-1])
# >  9
Run Code Online (Sandbox Code Playgroud)

  • 我只是意识到使用repr(n)代替str(n)要好得多,因为某些数字类型转换为字符串可能会失去准确性.不知道为什么,但我刚看到它发生在使用浮点数时. (5认同)