Python无法执行文件

时间:2017-10-11 13:15:48

标签: python python-2.7 for-loop

我创建了一个函数,可以将任何用户定义的值转换为相应的值。首先,此函数将初始化一个数组并对其输入进行一些修改。我可以确认错误在于这个函数,因为在删除这段特殊代码后,一切正常。

def get_lower_page(input):
   #initialize the array
   convpage=[0]*1535
   for k in range(16):
     for m in range(2,36):
        if m==2:
            lp=k
            convpage[lp]=lp
        elif m==3:
            up=32*m+2*k-79
            lp=up-1
            convpage[lp]=lp
            convpage[up]=lp
        elif (m==4 or m==5):
            xp=48*m+3*k-80
            up=32*m+2*k-79
            lp=up-1
            convpage[xp]=lp
            convpage[lp]=lp
            convpage[up]=lp
        elif (m>5 and m<33):
            xp=48*m+2*k-80
            up=48*m+3*k-174
            lp=up-1
            convpage[xp]=lp
            convpage[lp]=lp
            convpage[up]=lp
        elif m==33:
            xp=48*m+2*k-80
            up=48*m+3*k-174
            lp=up-1
            convpage[xp]=lp
            convpage[lp]=lp
            convpage[up]=lp
        elif m=34:
            up=48*m+3*k-174
            lp=up-1
            convpage[lp]=lp
            convpage[up]=lp
        else:
            lp=48*m+2*k-175
            convpage[lp]=lp

    return convpage[input]

此函数将在程序内部调用,例如:

get_lower_page(21), which returns 20 to the calling function

我不认为这里需要功能如何运作的细节。任何人都可以发现错误吗?

2 个答案:

答案 0 :(得分:1)

您的语法错误。在这一行:

elif m=34:

应该是:

elif m==34:

此外,您的return需要缩进,并且此块:

else:
        lp=48*m+2*k-175
        convpage[lp]=lp

返回索引越界错误。

答案 1 :(得分:0)

考虑k = 15且m = 35

的情况
lp = 48*m+2*k-175
convpage[lp]=lp

lp = 48 * 35 + 2 * 15-175 = 1535。但是您将数组初始化为convpage=[0]*1535,因此convpage[lp]=lp将引发错误,因为索引超出范围1。