es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , ,

Answer

  1. Avatar for 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ínea value[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:

    num = int(input())
    value = [[] for i in range(num)] # inicializar value con listas vacías
    
    maxval = 0
    
    for i in range(num): # cambiar la variable a índice en lugar de crear una nueva variable 'x'
        value[i].append(float(input())) # convertir la entrada a float
        if value[i][0] > maxval: # corregir error de sintaxis: debe verificar value[i][0], no value[i]
            maxval = value[i][0]
    
    print(maxval)
    

    En resumen, este código inicializa value con num listas vacías utilizando una comprensión de listas, corrige el error de sintaxis en la condición de verificación de maxval y convierte cada entrada a un float antes de agregarla a value. Por último, imprime el valor máximo como se requiere en el ejercicio.

Comments are closed.