Ya era hora de volver por aquí ¿no? Hoy traigo una nueva mejora al programa de la anterior entrada
En esta ocasión he añadido un bucle para que vuelva a pedirte las opciones una vez se termine el programa y además, la posibilidad de calcular el mínimo común múltiplo o máximo común divisor de dos números. A continuación tenéis el código…
#!/usr/bin/python # coding=utf-8 from __future__ import print_function import math from fractions import gcd def mcd(num1, num2): a = max(num1, num2) b = min(num1, num2) while b!=0: mcd = b b = a%b a = mcd return int(mcd) """ Funcion para hallar el Minimo Comun Multiplo """ def mcm(num1, num2): a = max(num1, num2) b = min(num1, num2) mcm = (a / mcd(a, b)) * b return int(mcm) opcion = 10 while opcion != 0 : print ("Dime qué quieres comprobar:") print ("1 - múltiplos de un número") print ("2 - divisores de un número") print ("3 - mínimo común múltiplo de dos números") print ("4 - máximo común divisor de dos números") print ("0 - salir") opcion = int(input("Pulsa la tecla de la opción que quieras: (1/2/3/4/0) ")) print ("Has elegido la opcion", opcion) #Evaluamos la opción elegida if (opcion > 4): #La opción elegida es incorrecta print("¡ERROR!: ¡Tienes que elegir una de las opciones!") elif (opcion == 1): ''' La opción elegida es la 1. Vamos a calcular los n primeros múltiplos de un número Ahora tenemos que solicitar el número y cuántos múltiplos hay que calcular ''' numero= int(input("Dime el número del que quieres encontrar los múltiplos: ")) multiplos = int(input("Dime cuántos múltiplos quieres: ")) #Desde 0 hasta el número de múltiplos solicitado... for i in range (0, multiplos): # Multiplicamos el número del que queremos los múltiplos por i print (numero*i, ' ', end='') print() print("") elif (opcion == 2): ''' La opción elegida es la 2 Vamos a calcular los divisores de un número dividiendo por cada número desde 1 hasta el número dado ''' numero = int(input("Escribe un número entero mayor que cero: ")) if numero <= 0: #Error: El número que se ha introducido es 0 o menor print("¡ERROR!: ¡Te he pedido un número entero mayor que cero!") else: print('Los divisores de', numero, 'son: ', end='') #Desde 1 hasta el número, si la división da de resto 0 es un divisor for i in range(1, numero + 1): if numero % i == 0: print(i, ' ', end='') print() print("") elif (opcion == 3): # Pedimos los datos al usuario num1 = int(input("Introduce el primer numero\n")) num2 = int(input("Introduce el segundo numero\n")) # Mostramos el resultado en pantalla print(("El m.c.m. entre "+str(num1)+" y "+str(num2)+" es: "+str(mcm(num1, num2)))) print("") elif (opcion == 4): # Pedimos los datos al usuario num1 = int(input("Introduce el primer numero\n")) num2 = int(input("Introduce el segundo numero\n")) # Mostramos el resultado en pantalla print(("El m.c.d. entre "+str(num1)+" y "+str(num2)+" es: "+str(mcd(num1, num2)))) print("") else: print ("Hasta pronto")
Espero que os resulte interesante.
Hay muchos aspectos a mejorar. Por ejemplo no hago control de entrada
opcion = int(input("Pulsa la tecla de la opción que quieras: (1/2/3/4/0) "))
de forma que si en lugar de un número se pulsa una letra el programa falla.
Otro aspecto a mejorar sería el poder elegir más de dos números para buscar el mcm. A la hora de comprobar un resultado de un ejercicio sería muy práctico.
Para la próxima entrada, pondré un ejemplo de lectura de un csv con valores separados por punto y coma (;) y la generación de un pdf a partir de esos datos.