Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python代码中获取索引错误_Python - Fatal编程技术网

在python代码中获取索引错误

在python代码中获取索引错误,python,Python,你好,我在接电话 索引器:索引超出“nz[i]处的范围。追加(c) 这个程序应该计算N的阶乘中的尾随零。 你能帮我优化我的代码吗,这样它也可以运行N的大值吗?nz是一个空列表。它没有任何元素,所以nz[i]总是会引发索引器。也许你的意思是nz.append(c)即在nz末尾添加c这是如何工作的: list.append(x) 在列表末尾添加一项;相当于[len(a):]=[x] 因此,您可能需要将nz[i].append(c)更改为nz.append(c),因为您的i索引已经由append函数处

你好,我在接电话

索引器:索引超出“nz[i]处的范围。追加(c)

这个程序应该计算N的阶乘中的尾随零。
你能帮我优化我的代码吗,这样它也可以运行N的大值吗?

nz
是一个空列表。它没有任何元素,所以
nz[i]
总是会引发
索引器。也许你的意思是
nz.append(c)
即在
nz
末尾添加
c

这是如何工作的:

list.append(x)

在列表末尾添加一项;相当于[len(a):]=[x]

因此,您可能需要将
nz[i].append(c)
更改为
nz.append(c)
,因为您的
i
索引已经由append函数处理。实际上,您假设列表中有一个
i
元素,这是错误的,因为您使用的是空列表

关于优化,您的问题可能是由于递归限制造成的。在python shell中尝试导入sys;sys.getrecursionlimit()
,结果应该是1000左右

交换阶乘函数的迭代版本可能是一个开始

def fact(n):
    fac = 1
    while (n>1):
        fac = fac*n
        n -= 1

    return fac

z = 0
t = int(raw_input())
nz = []
for i in range(0,t):
    c = 0
    n = int(raw_input())
    z = fact(n)

    z = list(str(z))
    for j in range(len(z)-1,1,-1):
        if z[j] != '0':
            break
        else:
            c +=1
    nz[i].append(c)
for k in range(0,t):
    print nz[k]

nz
是一个空列表。
nz[i]
对任何
i
都无效。在
i
的值为多少时,您会出错?如果您想快速解决此问题,您必须避免计算阶乘。使用正确的方法,您应该能够在一分钟内手动计算
1000!
的尾随零的数量。然后将其推广到算法解决方案。同样,pl请说明如何优化程序,以便为10000000数量级的大输入提供快速输出。也请说明如何优化程序,以便为10000000数量级的大输入提供快速输出?还请说明我以前使用过递归函数或阶乘,但它给出了错误(返回语句所在的给定行号出现错误)对于10^8的较大输入,请!您可以编辑您的评论,无需“垃圾邮件”“他们!不!不是一种交互式的方式,而是一种计算10^8或10^9量级非常大的No.s的阶乘的高效算法方式???请阅读此处的pdf:)
def fact(n):
    r = 1
    for x in range (n):
        r = r * (x+1)
    return r