tipos - Python: TypeError: los índices de lista deben ser enteros, no str
typeerror: string indices must be integers json (5)
Está utilizando i
en su bucle for
externo, y es un int. Luego en el ciclo tienes:
value = [int(i) for i in x.split()]
que i
hace una cadena (que es lo que split
devuelve). ¿Tal vez piensas que hay algún tipo de alcance dentro [ ]
? No hay Usted tiene una colisión de nombre, cambie uno de ellos.
Voy a hacer Matrix Addition en Python. (No terminar). Pero muestra un error.
m, n = (int(i) for i in raw_input().split())
a = [[0 for i in range(m)] for j in range(n)]
b = [[0 for i in range(m)] for j in range(n)]
c = []
total = []
for i in range(m):
x = raw_input()
for j in range(n):
value = [int(i) for i in x.split()]
c[i][j] = a[i][j]
#c.append(value)
print a
for i in c:
print i
Quiero ingresar
3 3 <- matriz dimensional m * n
1 2 3>
3 2 1> matriz A
1 3 2>
1 1 1>
1 1 1> matriz B
1 1 1>
y muestra como
2 3 4>
4 3 2> matriz A + B
2 4 3>
Está utilizando la misma variable en inner for loop.
for i in range(m):
x = raw_input()
for j in range(n):
# variable i is refering to outer loop
value = [int(p) for p in x.split()]
c[i][j] = a[i][j]
#c.append(value)
print a
for i in c:
print i
Más allá de las primeras dos respuestas, tendrás un problema con esta afirmación:
c[i][j] = a[i][j]
Cuando comience el ciclo, seré 0 y está bien, pero c
es una lista vacía y no tiene iterable en la primera posición, por lo que c[0][0]
devolverá un error. Deshágase de él y elimine el comentario de la siguiente línea:
#c.append(value)
EDITAR:
Tu código no devolverá lo que quieras. Será mejor que hagas algo como esto para crear una matriz con los lados dados:
for i in range(m):
d = []
for j in range(n):
x = raw_input()
d.append(int(x))
c.append(d)
Si tienes 3 para m
y n
, entonces crearás una matriz con lados 3 x 3 guardados en la variable c
. De esta forma, no es necesario dividir la entrada del usuario. El usuario puede dar un número a la vez. E incluso podrías cambiar la siguiente línea:
x = raw_input()
a:
x = raw_input("{0}. row, {1}. column: ".format(i+1, j+1))
¡Pruébalo!
import time
m, n = (int(i) for i in raw_input().split())
a = []
b = []
total = [[0 for i in range(n)] for j in range(m)]
for i in range(m):
x = raw_input()
for j in range(n):
value = [int(i) for i in x.split()]
a.append(value)
#print a
for i in range(m):
x = raw_input()
for j in range(n):
value = [int(i) for i in x.split()]
b.append(value)
#print b
for i in range(m):
for j in range(n):
total[i][j] = a[i][j] + b[i][j]
for i in total:
print '' ''.join(map(str, i))
time.sleep(2)
¡DE ACUERDO! ¡Me lo imaginé! Gracias
También puede presionar este error si declara un int y lo trata como un dict
>>> a = []
>>> a[''foo''] = ''bar''
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: list indices must be integers, not str