2011-12-30 6 views
2

프로그램을 실행할 때이 오류가 발생하며 이유가 없습니다.TypeError : 'int'유형의 인수가 반복 가능하지 않습니다.

코드 : 내가 알고 싶은 무엇

matrix = [ 
    [0, 0, 0, 5, 0, 0, 0, 0, 6], 
    [8, 0, 0, 0, 4, 7, 5, 0, 3], 
    [0, 5, 0, 0, 0, 3, 0, 0, 0], 
    [0, 7, 0, 8, 0, 0, 0, 0, 9], 
    [0, 0, 0, 0, 1, 0, 0, 0, 0], 
    [9, 0, 0, 0, 0, 4, 0, 2, 0], 
    [0, 0, 0, 9, 0, 0, 0, 1, 0], 
    [7, 0, 8, 3, 2, 0, 0, 0, 5], 
    [3, 0, 0, 0, 0, 8, 0, 0, 0], 
    ] 
a = 1 
while a: 
    try: 
     for c, row in enumerate(matrix): 
      if 0 in row: 
       print("Found 0 on row,", c, "index", row.index(0)) 
       if 1 not in c: 
        print ("t") 
    except ValueError: 
     break 

내가 일어나기에서이 오류를 수정하는 방법 인 여전히 프로그램이 :이 오류는 "1이 아닌 C의 경우"라는 줄에 발생 올바르게 작동하십시오.

미리 감사드립니다.

답변

8

여기 c은 검색하는 목록이 아닌 색인입니다. 정수를 반복 할 수 없으므로 오류가 발생합니다.



>>> myList = ['a','b','c','d'] 
>>> for c,element in enumerate(myList): 
...  print c,element 
... 
0 a 
1 b 
2 c 
3 d 

당신은 1 이해

0

c 행 번호가하지 않는, c에 있는지 확인하려고, 그래서 그것은 int을합니다. 따라서 숫자는 in 다른 숫자가 될 수 없습니다.

+0

어떻게 오류없이이 작업을 수행 할 수 있습니까? – chingchong

+0

무엇을하려고합니까? (언제't'를 인쇄해야합니까?) – BenH

+0

행에 0이 있고 그 행에 1이 없으면 "t"가 인쇄되어야합니다. – chingchong

0

if 1 != c: - c에 값이 1이 아닌지 테스트합니다.

+0

그래도 작동할까요? 0이 들어있는 행을 확인하겠습니까? – chingchong

0

행 번호를 잡고있는 정수 인 'c'를 반복하려고합니다.

It should print "t" if there is a 0 in a row

는 말한다, 그래서 그런 다음 행과 C를 대체 :

변화 if 1 not in c It should print "t" if there is a 0 in a row and there is not a 1 in the row.

영업의 의견을 바탕으로

if 1 not in row: 
2

if 1 not in row

for c, row in enumerate(matrix): 
    if 0 in row: 
     print("Found 0 on row,", c, "index", row.index(0)) 
     if 1 not in row: #change here 
      print ("t") 

또한 설명 : row 변수 홀 즉, [0, 5, 0, 0, 0, 3, 0, 0, 0]과 같은 단일 행을 의미합니다. c 변수는 의 인덱스를 보유하고 있으며 행입니다. 즉 row이 행렬의 세 번째 행을 보유하면 c = 2입니다. c은 0부터 시작합니다. 즉, 첫 번째 행은 인덱스 0에 있고 두 번째 행은 인덱스 1에 있습니다.

+0

고마워요. 제가 찾고있는 것에 정말 가깝습니다! – chingchong

+0

내가 아직도 혼란스럽게 생각하는 것은 0이있는 행이 여러 개있는 경우입니다. 모든 행에 대해 그렇게 할 수 있습니까? – chingchong

+0

@chingchong 예, 0이있는 모든 행에 대해 "Found 0 on row ..."을 인쇄합니다.왜냐하면'for c, 행을 열거 (행렬)'을 통해 행렬의 행을 반복하기 때문입니다. –

관련 문제