我创建了一个函数,可以将任何用户定义的值转换为相应的值。首先,此函数将初始化一个数组并对其输入进行一些修改。我可以确认错误在于这个函数,因为在删除这段特殊代码后,一切正常。
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
我不认为这里需要功能如何运作的细节。任何人都可以发现错误吗?
答案 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。