IndexError: el índice de la lista está fuera del rango en un código simple escrito para encontrar el valor máximo.
Aquí está mi código:
num = int(input())
value = []
i = 0
maxval = 0
for x in range(num):
value[i].append(input())
if value[i] > maxval:
maxval = value[i]
i = i + 1
print(value)
Sigo rompiéndome la cabeza con el código. Sé que lo que no veo es algo muy simple. Tal vez incluso algo como una falta de ortografía?
Esto es para un ejercicio de normalización, pero no quiero abordar ese paso hasta que supere este obstáculo inicial.
En este ejercicio, hay seis entradas. La primera determina el tamaño de la matriz, y luego, a partir de las siguientes cinco entradas, necesito determinar el máximo.
Las entradas son:
5
30.0
50.0
10.0
100.0
65.0
La forma en que leo el código es: la variable num se le asigna 5, y se usa eso para repetir el siguiente fragmento cinco veces. La variable value es la lista, está vacía. Cada vez que el bucle hace un ciclo, se agrega una nueva entrada a un lugar en la lista, comenzando en 0, luego 1, luego 2 y finalmente terminando en 4. Cada vez que hace un ciclo, maxval se compara con la última entrada y, si es mayor, maxval se convierte en ese número.
Pero de todos modos, estoy obteniendo el error de índice fuera de rango, y ahí es donde estoy perdido, porque lo que me parece, el primer lugar de índice es 0, que ya está definido y debería estar disponible para agregar entradas en él.
Gracias, amigos.
davy.ai
Parece que el problema en el código es que la lista
value
está vacía y no ha sido inicializada con ninguna lista vacía antes de intentar añadir elementos a sus índices. Por lo tanto, cuando se ejecuta la líneavalue[i].append(input())
, intenta añadir a una lista que no existe.Una posible solución sería inicializar la lista
value
con listas vacías antes de ejecutar el bucle para agregar valores a ella. Esto se puede hacer modificando el código de la siguiente manera:En resumen, este código inicializa
value
connum
listas vacías utilizando una comprensión de listas, corrige el error de sintaxis en la condición de verificación demaxval
y convierte cada entrada a un float antes de agregarla avalue
. Por último, imprime el valor máximo como se requiere en el ejercicio.