[D]关于IndexError: list index out of range 的有关问题
[D]关于IndexError: list index out of range 的问题
我编了个小程序 读取文件数据,运行时总提示IndexError: list index out of range ,我仔细检查了,索引并没有越界啊,还有其他原因导致这个错误吗 代码太长了 贴出部分代码 希望大家帮忙看看 感激不尽
我编了个小程序 读取文件数据,运行时总提示IndexError: list index out of range ,我仔细检查了,索引并没有越界啊,还有其他原因导致这个错误吗 代码太长了 贴出部分代码 希望大家帮忙看看 感激不尽
- Python code
file1=open('%s' % mgt) #从mgt文件中读取信息 global line1 line1=[] global line1num line1num=0 for eachline in file1.readlines(): line1.append(eachline) line1num+=1 global components components=[] global compnum compnum=0 i=0 cps=0 cpo=0 while i<line1num: if line1[i]=='*MEMBER ; Member'+'\n': cps=i+1 break i+=1 cpt=cps if cpt!=0: while cpt<line1num: if line1[cpt]=='\n': cpo=cpt break cpt+=1 j=0 while cps<cpo: line1[cps]=line1[cps].strip() r=re.compile(',') comdata=[] comdata=r.split(line1[cps]) components.append([]) i=0 while i<len(comdata): components[j].append(comdata[i]) i+=1 j+=1 compnum+=1 cps+=1 for each in components: each.pop(1) file7=open('%s' % rcs1) #从rcs文件中读取信息 #此时line2不是全局变量 line2=[] line2num=0 for eachline in file7.readlines(): line2.append(eachline) line2num+=1 file7.close() combeamnum=0 line3=[] line3num=0 line5=[] line6=[] line7=[] line8=[] i=0 while i<line2num: if line2[i].count('kN, m')!=0: cb=i+1 break i+=1 ct=cb if ct!=0: while ct<line2num: if line2[ct].count('=')==3: line3.append(line2[ct]) line3num+=1 if line2[ct].count('=')==2: line3.append(line2[ct]) line3num+=1 if line2[ct].count('@')!=0: line3.append(line2[ct]) line3num+=1 ct+=1 i=0 while i<line3num: line3[i]=line3[i].strip() line3[i+1]=line3[i+1].strip() line3[i+2]=line3[i+2].strip() line3[i+3]=line3[i+3].strip() line3[i+4]=line3[i+4].strip() line3[i+5]=line3[i+5].strip() r=re.compile(' *') #利用正则表达式,' *'对应' ',' ',' ',' '这一类 line4data=[] line4data1=[] line4data2=[] line4data3=[] line4data4=[] line4data5=[] line4data=r.split(line3[i]) line4data1=r.split(line3[i+1]) line4data2=r.split(line3[i+2]) line4data3=r.split(line3[i+3]) line4data4=r.split(line3[i+4]) line4data5=r.split(line3[i+5]) line4data[2]=line4data[2].strip() line4data[2]=line4data[2].rstrip(',') line4data[5]=line4data[5].strip() line5.append([int(line4data[2])]) line5[i].append(int(line4data[5])) line4data1[2]=line4data1[2].strip() line4data1[2]=line4data1[2].rstrip(',') line4data1[5]=line4data1[5].strip() line5.append([float(line4data1[2])]) line5[i+1].append(float(line4data1[5])) line4data2[5]=line4data2[5].strip() line4data2[5]=line4data2[5].rstrip(',') line4data2[5]='HRB'+str(int(line4data2[5])/1000) line5.append([line4data2[5]]) line4data3[5]=line4data3[5].strip() line4data3[6]=line4data3[6].strip() line4data3[6]=line4data3[6].split('-') line4data3[6][1]=line4data3[6][1].lstrip('d') line4data3[10]=line4data3[10].strip() line4data3[11]=line4data3[11].strip() line4data3[11]=line4data3[11].split('-') line4data3[11][1]=line4data3[11][1].lstrip('d') line5.append([float(line4data3[5])]) line5[i+3].append(int(line4data3[6][0])) line5[i+3].append(int(line4data3[6][1])) line5[i+3].append(float(line4data3[10])) line5[i+3].append(int(line4data3[11][0])) line5[i+3].append(int(line4data3[11][1])) line4data4[5]=line4data4[5].strip() line4data4[6]=line4data4[6].strip() line4data4[6]=line4data4[6].split('-') line4data4[6][1]=line4data4[6][1].lstrip('d') line4data4[10]=line4data4[10].strip() line4data4[11]=line4data4[11].strip() line4data4[11]=line4data4[11].split('-') line4data4[11][1]=line4data4[11][1].lstrip('d') line5.append([float(line4data4[5])]) line5[i+4].append(int(line4data4[6][0])) line5[i+4].append(int(line4data4[6][1])) line5[i+4].append(float(line4data4[10])) line5[i+4].append(int(line4data4[11][0])) line5[i+4].append(int(line4data4[11][1])) line4data5[5]=line4data5[5].strip() line4data5[6]=line4data5[6].strip() line4data5[6]=line4data5[6].split('-') line4data5[6][1]=line4data5[6][1].lstrip('d') line4data5[10]=line4data5[10].strip() line4data5[11]=line4data5[11].strip() line4data5[11]=line4data5[11].split('-') line4data5[11][1]=line4data5[11][1].lstrip('d') line5.append([float(line4data5[5])]) line5[i+5].append(int(line4data5[6][0])) line5[i+5].append(int(line4data5[6][1])) line5[i+5].append(float(line4data5[10])) line5[i+5].append(int(line4data5[11][0])) line5[i+5].append(int(line4data5[11][1])) i+=6 i=0 j=0 while j<len(line5): line6.append([]) line6[i]=line5[j]+line5[j+1]+line5[j+2]+line5[j+3] line7.append([]) line7[i]=line5[j]+line5[j+1]+line5[j+2]+line5[j+4] line8.append([]) line8[i]=line5[j]+line5[j+1]+line5[j+2]+line5[j+5] combeamnum+=1 i+=1 j+=6 j=0 print line6 print len(line6) print combeamnum print components print len(components) print compnum while j<combeamnum: if section[int(line6[j][1])-1][1]=='SB': B=float(line6[j][2]) H=float(line6[j][3]) if B==0.1: B=0.1001 if H==0.1: H=0.1001 k=0 while k<compnum: if int(components[k][0])==int(line6[j][0]): #根据单元来对应截面,然后求得等效截面 if len(components[k])==1: #梁没有被分割 if int(line6[j][5])+int(line6[j][8])<int(line8[j][5])+int(line8[j][8]): ....下面还很长 不贴出来了 运行后 结果是 [[1, 1, 0.25, 0.5998, 'HRB335', 0.000297, 2, 20, 0.00029997, 2, 20], [2, 1, 0.25, 0.598, 'HRB335', 0.000501, 2, 20, 0.0002997, 2, 20], [3, 1, 0.25, 0.5998, 'HRB335', 0.0005001, 2, 20, 0.00029997, 2, 20], [4, 1, 0.25, 0.5998, 'HRB335', 0.0005001, 2, 20, 0.0002997, 2, 20], [5, 1, 0.25, 0.5998, 'HRB335', 0.00050001, 2, 20, 0.00040002, 2, 20], [6, 1, 0.25, 0.5998, 'HRB335', 0.0002997, 2, 20, 0.0002997, 2, 20], [7, 1, 0.25, 0.5998, 'HRB335', 0.000297, 2, 20, 0.0002997, 2, 20], [8, 1, 0.25, 0.59998, 'HRB335', 0.00998, 3, 20, 0.00029997, 2, 20]] 8 8 [['1', ' 571', ' 572'], ['2', ' 603', ' 604'], ['3', ' 635', ' 636'], ['4', ' 673', ' 674'], ['5', ' 559', ' 560'], ['6', ' 201'], ['7', ' 213'], ['8', ' 661', ' 662'], ['9', ' 544', ' 546'], ['10', ' 227'], ['11', ' 239'], ['12', ' 648', ' 650'], ['13', ' 543', ' 545'], ['14', ' 583', ' 584'], ['15', ' 615', ' 616'], ['16', ' 647', ' 649'], ['17', ' 570', ' 569'], ['18', ' 558', ' 557'], ['19', ' 542', ' 541'], ['20', ' 574', ' 573'], ['21'], ['22', ' 548', ' 547']] 22 22 Exception in Tkinter callback Traceback (most recent call last): File "D:\Program Files\Python25\lib\lib-tk\Tkinter.py", line 1403, in __call__ return self.func(*args) File "C:/Users/caizhen/Desktop/M2A0404调试.py", line 9970, in r5progress compbeamsecbar() File "C:/Users/caizhen/Desktop/M2A0404调试.py", line 1869, in compbeamsecbar if int(components[k][0])==int(line6[j][0]): #根据单元来对应截面,然后求得等效截面