2017-12-09 2 views
-1

저는 매우 초보 프로그래머로 약 3 개월 전에 시작했습니다. 나는 학교 과제물을 작성하고있다. 그것은 브리지 대역폭 문제입니다. 임 : 'IndexError : pop index out of range'라인 28에 인덱스 오류가 발생했습니다. 이 문제를 해결하는 방법을 모릅니다. 나는 또한 내 코드를 개선하기위한 다른 제안에 대해서도 열려있다.팝 인덱스가 범위를 벗어났습니다 (파이썬)

그런데 내 프로그램이 아직 끝나지 않았습니다. 인쇄 문구를 많이 써야합니다.

# 1.The fastest two cross first 
# 2.The fastest crosses back 
# 3.The slowest two cross next 
# 4.The fastest crosses back 
# 5.The remaining two cross 
import csv, random 

locAtime = [] 
locAname = [] 
locBtime = [] 
locBname = [] 

#import csv file 
with open('gNames.csv','r', encoding="latin-1") as csvfile:  
    reader = csv.reader(csvfile,delimiter=',') 
    locAname = [''.join(x) for x in list(reader)] 

locAtime = [i for i in range(len(locAname)+1)] 

random.shuffle(locAtime) 

timer = 0 

while len(locAname) != 0: 

    # 1. The fastest two cross first 
    for i in range(2): 
     idx = locAtime.index(min(locAtime)) 
     locBname.append(locAname.pop(idx)) #LINE 28 INDEX ERROR HAPPENS HERE 
     locBtime.append(locAtime.pop(idx)) 

    timer += locBtime[-1] 

    if len(locAname) == 0: 
     break 

    # 2. The fastest crosses back 
    idx = locBtime.index(min(locBtime))  
    locAname.append(locBname.pop(idx)) 
    locAtime.append(locBtime.pop(idx)) 

    timer += locAtime[-1] 

    #3. The slowest two cross next 

    for i in range(2): 
     idx = locAtime.index(max(locAtime))  
     locBname.append(locAname.pop(idx)) 
     locBtime.append(locAtime.pop(idx)) 

    timer += locBtime[-2] 

    if len(locAname) == 0: 
     break 

    #4. The fastest crosses back 
    idx = locBtime.index(min(locBtime))  
    locAname.append(locBname.pop(idx)) 
    locAtime.append(locBtime.pop(idx)) 

    timer += locAtime[-1] 
+0

의 가능한 복제 https://stackoverflow.com/questions/12182147/pop 경우이를 추가 -index-out-of-range) – eyllanesc

답변

0

시도 루프의 첫 번째 후 문 (1)

# 1. The fastest two cross first 
for i in range(2): 
    if i != 0: 
[범위 튀어 인덱스 (
+0

실제 코드에서 이미 들여 쓰여졌습니다. 내가 이것을 올렸을 때 CSV 파일을 열 때 문제가 있다고 생각하지 않는다는 것을 보여주지 않음으로써 나는 실수를했다. 방금 실수를 수정하기 위해 게시물을 편집했습니다. –

+0

내 대답을 편집했습니다. – johnashu

관련 문제