2013-10-21 3 views
-3
x = int (raw_input('Introduceti Ziua in care doriti adaugarea: ')) 
print 
print "  Options Available" 
print "---------------------------------" 
print "1 -- FOOD" 
print "2 -- BOOKS" 
print "3 -- SPORTS" 
print "4 -- Clothing" 
print "5 -- Transport" 
y = int (raw_input('Introduceti tipul dorit: ')) 
m = int (raw_input('Introduceti valoarea dorita: ')) 
a[x][y]=a[x][y] + m 

이것은 내 기능 중 하나입니다. a은 전역이며 모든 값이 0으로 설정된 행렬로 정의됩니다 (예 : a = [[0,0,0,0,0],[0,0,0,0,0,0]]). 시도한 경우 a[1][2] = a[1][2] + m 오류 메시지 List index out of range가 표시됩니다.도움이 필요하십니까 - 색인이 범위를 벗어 났음

도와주세요.

+0

이것은이 문제를 일으키지 않았으며, m에 대해 어떤 가치를 제공 했습니까? – DevC

+0

@DevC :'m'의 값은 부적합합니다. 불량'm' 값이 발생할 수있는 유일한 것은'TypeError'입니다. –

+0

마지막 줄 바로 앞에 인쇄 str (a)을 넣으십시오. 그런 다음 입력, 출력 및 오류를 포함하여 질문에 콘솔 텍스트를 복사하여 붙여 넣으십시오. – sdanzig

답변

4

는 여기를 재현 할 수 없습니다

>>> a = [[0,0,0,0,0],[0,0,0,0,0,0]] 
>>> a[1][2] = a[1][2] + 999 
>>> a 
[[0, 0, 0, 0, 0], [0, 0, 999, 0, 0, 0]] 

을 당신은 알고있다 [1]이 목록의 요소에 액세스하는?

당신이 y 제로 각각 x 목록의 배열을 만들려면

는, 예를 들어

a = [[0] * y for _ in xrange(x)] 

을 수행

>>> x = 4 
>>> y = 5 
>>> a = [[0] * y for _ in xrange(x)] 
>>> a 
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]] 
  • [0] * yy 제로의 목록을 만듭니다.
  • 이것은 list comprehensionx 번 내부에서 수행됩니다.

당신은 스스로에게 물을 수도 있습니다 : a = [[0] * y] * x? 계속해서 시도해보고 무슨 일이 일어나는 지 봅니다. 작동하지? 이제 a[0][0] = 1을보고 무슨 일이 일어나는지 확인하십시오.

+0

a는 위에서 설명한대로 main에서 전역으로 빌드됩니다. 저는 1,31과 1,5 사이의 x 값을 입력하고 있습니다. 사실 내 메인에서는 이렇게 보입니다. a = [[00000000000000000000000, 00000000000000000000000000, 0,0], [0000000000000000000000, 00000000000000000]] –

+0

@MuresanIonut : 더 중요한 것은, 어떻게 보여 주시겠습니까? 'a'를 만들고'x'와'y'를 위해 무엇을 입력하고 있는지를 알려줍니다. –

+2

x에 1보다 큰 값을 입력하면 범위를 벗어납니다. x는 0 또는 1 일 수 있으며 a는 2 개의 요소 만 가질 수 있습니다. – Pines

관련 문제