Python除以10

Python除以10,python,python-3.x,division,Python,Python 3.x,Division,我想计算一个数的阶乘的尾随零。当我把这个数字除以10时,我希望最后一个零会被去掉,但事实并非如此 def fact(num): if (num==0 or num==1): return 1 else: return num*fact(num-1) def num(a): f = fact(a) count = 0 while(f%10==0): count=count+1 print(f)

我想计算一个数的阶乘的尾随零。当我把这个数字除以10时,我希望最后一个零会被去掉,但事实并非如此

def fact(num):
    if (num==0 or num==1):
        return 1
    else:
        return num*fact(num-1)

def num(a):
    f = fact(a)
    count = 0
    while(f%10==0):
        count=count+1
        print(f)
        f=int(f/10)
        print(f)
    return count

n=int(input())
while(n!=0):
    a=int(input())
    print(num(a))
    n=n-1

您需要更换:

f=int(f/10)

函数中的
num()。它会解决你的问题


说明:

f/10
将数字转换为
浮点数
。当您将该
浮点值
转换为
int
时,如果是一个大数字,它将失去精度

您可以通过执行以下操作进行确认:

a = 8320987112741390144276341183223364380754172606361245952449277696409600000000000000

print(int(a/10)) # prints: 832098711274139031630889608027340070244161333703152098685794054394185233318543360

print(a//10) # prints: 832098711274139014427634118322336438075417260636124595244927769640960000000000000

您可以使用
/
进行整数除法
/
是浮点除法,它会失去精度。有趣的事实:
数学。阶乘
是一个标准的库函数。另一个有趣的事实:
num(fact(n))
只是
n//5
@SanilSinaiBorkar在Python中,
int
long
之间没有区别(
long
不存在)。@Demi Lune,我还没有检查/验证,但这是因为总是涉及到2和5的乘法(mod 10)(导致额外的尾随0)?
a = 8320987112741390144276341183223364380754172606361245952449277696409600000000000000

print(int(a/10)) # prints: 832098711274139031630889608027340070244161333703152098685794054394185233318543360

print(a//10) # prints: 832098711274139014427634118322336438075417260636124595244927769640960000000000000