如何从整数后面捕获第一个非零整数?

how do I capture the first non-zero integer from the back of an integer?

def last_digit(n):
    factorials = []
    for i in range(1,n + 1):
        i = str(i)
        i = i[::-1]
        for j in i:
            if j != 0:
                factorials.append(j)
                break

对于从 1 到某个整数 n 的每个整数,我试图从每个整数的后面捕获 'first' 非零整数。

比如我们有18600,那么我要的整数就是6。

当我 运行 上面的代码在纸上工作时,但是当我 运行 它在我的 IDE 上时,它是不正确的,特别是对于 '10',它捕获零,但我认为正在发生的是我将其反转,使其变为“01”;然后内部 for 循环将捕获第一个非零值。

您可以先将数字转换为字符串,然后执行此操作:

def last_digit(n):
    factorials = []
    for i in range(1,n + 1):
        i = str(i)
        factorials.append(i.strip('0')[-1])
    return factorials

strip 函数将删除字符串开头和结尾的所有零,然后使用索引 -1 可以获得最后一个字符。

要实现这一点,您应该首先将整数 'n' 转换为字符串,然后以相反的顺序遍历它。 下面是演示这个的代码。

  def last_digit(n): 
    n=str(n)
    rev=n[::-1] # Reversing the string 'n'
    for i in rev:
        if i!='0' :
            print(i)
            break