Python - programa en python

 
Vista:
sin imagen de perfil

programa en python

Publicado por sergi (9 intervenciones) el 26/09/2014 19:35:44
Hola, tengo que hacer un programa que calcule cual es el numero natural mas pequeño que sea divisible para 2,3,4,5,6,7,8,9 y 10.
He conseguido hacer que me diga los dos divisibles pero nose que hacer para que me de el mas pequeño,
esto es lo que tengo hecho:
def divisible():
>for i in range (0, 11):
>>if i / 2 == 0:
>>>if i / 3 == 0:
>>>>if i / 4 == 0:
>>>>>if i / 5 == 0:
>>>>>>if i / 6 == 0:
>>>>>>>if i / 7 == 0:
>>>>>>>>if i / 8 == 0:
>>>>>>>>>if i / 9 == 0:
- >>>>>>>>>if i / 10 == 0:
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Moebius

programa en python

Publicado por Moebius (5 intervenciones) el 27/09/2014 19:24:36
programa

Aunque en realidad, tu programa es en realidad, encontrar el mínimo común múltiplo de esos números...
igual allí te dejo ese otro enfoque.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

programa en python

Publicado por sergi (9 intervenciones) el 28/09/2014 16:59:59
muchas gracias me ha servido, aunque aun soy principiante en python y nos muy bien como lo has hecho, podrias explicarmelo un poco por encima, muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Moebius

programa en python

Publicado por Moebius (5 intervenciones) el 29/09/2014 09:46:52
Me imagino que conocerás la función de %. Por ejemplo si usted coloca esto 50 % 2 el resultado será cero, ya que el residuo de la división de 50 entre 2 es cero, pero si colocas esto 7 % 2 el resultado de esto es 1 ya que el residuo de la división de 7 entre 2 es 1.

Haré una traza para que veas cómo funciona el algoritmo: Bien NUM empieza siendo 10 y MINIMO empieza siendo 'NO'

Como MINIMO = 'NO' entonces entra al bucle while. De inmediato se entra al bucle for, ya sabrás que lo que hace ese bucle es tomar los elementos creados con range (2, 11) me refiero a estos: [2, 3,4,5,6,7,8,9,10] de uno a la vez, por lo que divisor empieza siendo 2.

Recuerda que NUM = 10 y divisor = 2 por tanto NUM % divisor es igual a cero (ya que 10 es divisible por 2)

Por tanto cuando se ejecuta la linea 10 del código (donde se encuentra el condicional if) no se cumple la condición que está escrita allí, ya que NUM % divisor no es diferente de cero, de hecho, ¡es igual a cero!

Ahora se ejecuta la línea 13 del código, resulta que efectivamente NUM % divisor es igual a cero, pero aún divisor no es igual a 10 y para entrar a dicho condicional debe cumplir esas dos condiciones. Por lo que ahora pasamos a la línea 9 del código, y divisor toma el valor de 3.

Recuerda que NUM = 10 y divisor = 3 por tanto NUM % divisor es igual a 1

Por tanto cuando se ejecuta la linea 10 del código (donde se encuentra el condicional if) si se cumple dicha condición, ya que efectivamente NUM % divisor es diferente de cero ¡y eso significa que nuestro NUM = 10 no nos sirve! por lo que se ejecuta la línea 11 del código y NUM pasa a ser 11, break quiere decir que se sale del ciclo for. ya que no tiene sentido seguir ensayando si ya se demostró que NUM = 10 no sirve.

como observarás MINIMO aún sigue siendo 'NO' por lo que se sigue en el bucle while y se entra nuevamente en el bucle for. y empezamos esta vez a ensayar pero con NUM = 11.

Espero que quede mas o menos claro esto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar