2016-11-03 4 views
-2

그래프에서 노드 사이의 경로가 가능한지 찾으려고합니다. 어떤 이유로 든 내 코드는 "TypeError : 목록 색인은 정수가 아니고 str이 아니어야합니다."를 반환합니다. 에러는 라인 31 및 17에 LEN (경우 (N) == numberOfEdges (N)) (nextEdge 대한 목록의 [vertexIndex] :Python 3 : 코드를 실행하려고 할 때 "TypeError :리스트 인덱스가 str이 아닌 정수 여야합니다."

lists = [] 
lists.append([]) 
lists.append([]) 
lists.append([]) 
lists.append([]) 
lists.append([]) 
lists[0] = [False,True,False,False,True] 
lists[1] = [True,False,True,True,False] 
lists[2] = [False,True,False,True,True] 
lists[3] = [False,True,True,False,True] 
lists[4] = [True,False,True,True,False] 

document = "/Users/jamesball/Documents/workspace/Workspace/testExercise.txt" 

def numberOfEdges(vertexIndex): 
    totalCount = 0 #Set a counter to 0 
    for nextEdge in lists[vertexIndex]: 
     if nextEdge == True: 
       totalCount = totalCount + 1 
    return totalCount 

def pathfinder(file): 
    file_document = open(file, 'r') 
    lists2 = [] 
    with file_document as f: 
     vals = [line.strip() for line in f] 
    for value in vals: 
     lists2.append(value) 
    for n in lists2: 
     print n 
     if len(n) == numberOfEdges(n): 
      print "True" 
     else: 
      print "false" 

pathfinder(document) 
+0

어떤 줄에는 오류가 있습니까? – ODiogoSilva

+0

오류를 정확히 지적 할 때 마지막 코멘트를 삭제했습니다. 질문을 업데이트하여 전체 코드 흐름을 따라 가면서 내가 알지 못하는 오류를 찾아야하기 때문에 오류의 원인이되는 행을 나타내십시오. – roganjosh

+0

문제가'for nextEdge in lists [ vertexIndex] :'. 'vertexIndex'는 정수입니까? – ODiogoSilva

답변

1

vals = [line.strip() for line in f]에서의 파일의 내용을 읽어 vals은 문자열의 list 값을 보유합니다. 그런 다음이 문자열 값을 numberOfEdges() 함수에 if len(n) == numberOfEdges(n)에 전달합니다. 그러나 numberOfEdges() 함수에서 반복하는 동안 for nextEdge in lists[vertexIndex]을 수행합니다. 이 시점에서 그 문자열 (파일에서 읽음)을 인덱스로 lists[vertexIndex]으로 전달하지만 색인은 항상 int 값이어야합니다.

파일 내용을 입력하면 도움이 될 것입니다.

vals = [int(line.strip()) for line in f] 
# Not sure if I am right about this 
+1

젠장,'vals = [line.strip() for line in f]'에서 시작하는 문제를 찾은 다음 자신을 잃어 버렸습니다. 좋은 점 :) – roganjosh

+0

추적 (최근 호출 마지막) : 파일 "/Users/jamesball/Documents/workspace/Workspace/Test.py" 의 경로 찾기 (문서) 파일 "/ Users/jamesball/PathFinder의 문서/작업 공간/작업 공간/Test.py "31 행 len (n) == numberOfEdges (n) : TypeError : 'int'유형의 객체에 len()이 없습니다. –

+0

이것은 나는 그렇게한다 –

0

가 주석을 읽어 명시 적으로 vals을 assinging 동안 int에 입력 캐스팅하는 파일이 int 값을 포함 할 경우, 당신은있다!

lists = [] 
lists.append([]) 
lists.append([]) 
lists.append([]) 
lists.append([]) 
lists.append([]) 
lists[0] = [False,True,False,False,True] 
lists[1] = [True,False,True,True,False] 
lists[2] = [False,True,False,True,True] 
lists[3] = [False,True,True,False,True] 
lists[4] = [True,False,True,True,False] 

document = "/Users/jamesball/Documents/workspace/Workspace/testExercise.txt" 

def numberOfEdges(vertexIndex): # vertexIndex is a STRING 
    totalCount = 0 #Set a counter to 0 
    for nextEdge in lists[vertexIndex]: #PROBLEM! vertexIndex is a STRING!!! 
     if nextEdge == True: 
       totalCount = totalCount + 1 
    return totalCount 

def pathfinder(file): 
    file_document = open(file, 'r') 
    lists2 = [] 
    with file_document as f: 
     vals = [line.strip() for line in f] # puts STRINGS into vals 
    for value in vals: 
     lists2.append(value) # puts vals's STRINGS into lists2 
    for n in lists2: # iterates through each STRING 
     print n 
     if len(n) == numberOfEdges(n): # feeds numberOfEdges a STRING!!! 
      print "True" 
     else: 
      print "false" 

pathfinder(document) 

컴퓨터의 지시에 따라 코드를 수행하십시오.

관련 문제