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.

Revisando cada elemento en un arreglo para un requisito específico.

Necesito revisar cada elemento en un arreglo para ver si puede ser dividido por 5 o más números diferentes, de lo contrario, lo coloco en un arreglo diferente.

Por ejemplo, tengo un arreglo [3,32,6,8,0,16,3,45] y tengo que obtener un resultado de [3,5,8,0,3].

Intenté hacer un bucle while simple dentro de un bucle for:

for i in array:
    n = 0
    div = 1
    while n <= 4 and div <= i:
        if i % div == 0:
            n += 1
        div += 1

    if n <= 4:
        sub_array.append(i)

return sub_array

Funciona bien, pero necesito que revise la división con elementos y no con índices. En el momento en que cambio todos los ‘i’ a ‘array[i]’: “índice de lista fuera de rango”. ¿Hay alguna forma de resolver este problema?

La razón por la que trato de mejorar este código es porque el probador que estoy usando para comprobarlo devuelve errores de vez en cuando.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una forma de solucionar el problema que está enfrentando. En lugar de utilizar un bucle for para iterar a través del arreglo, puede utilizar un bucle while para iterar a través del índice del arreglo. De esta manera, puede acceder a los elementos del arreglo utilizando el índice y verificar la división con los elementos. Aquí hay un ejemplo de código:

    i = 0
    while i < len(array):
        n = 0
        div = 1
        while n <= 4 and div <= array[i]:
            if array[i] % div == 0:
                n += 1
            div += 1
    
        if n <= 4:
            sub_array.append(array[i])
        i += 1
    
    return sub_array
    

    En este código, inicializamos una variable i en 0 y la utilizamos como índice para el bucle while. Dentro del bucle while, accedemos al elemento del arreglo utilizando array[i] y verificamos su división con números del 1 al propio elemento.

    Esto debería resolver el problema del error “índice de lista fuera de rango” y mejorar la eficiencia de su código.

Comments are closed.