Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from polinomio_clase import Polinomio
- def crear_polinomio():
- coeficientes = [] # se inicia una lista vacía para almacenar los coeficientes
- grado = int(input("¿Cuál es el grado del polinomio?: "))
- # se recorre el rango de grados del polinomio de forma descendente
- for i in reversed(range(grado+1)):
- if i != 0: # si el término no es el constante
- coef = int(input(f"Escriba el coeficiente del término de x con exponente {i}: "))
- coeficientes.append(coef) # se agrega el coeficiente a la lista
- else: # si es el término constante
- coef = int(input(f"Escriba el coeficiente del término constante (sin x): "))
- coeficientes.append(coef) # se agrega el término constante a la lista
- polinomio = Polinomio(coeficientes) # se crea una instancia del polinomio
- print(f"\nPolinomio creado:\n\n{polinomio}\n")
- return polinomio
- def listar_polinomios():
- polinomios = array_de_polinomios()
- print(" Lista de polinomios:")
- print("═══════════════════════════════════════════")
- for i, pol in enumerate(polinomios):
- print(f"{i+1}) {pol}")
- def eliminar_polinomio():
- polinomios = array_de_polinomios()
- print("¿Qué polinomio quieres eliminar de la lista? (1,2,3,4...)")
- pol_eliminar = int(input())
- polinomios.pop(pol_eliminar-1)
- with open('polinomios.txt', 'w', encoding='utf-8') as file:
- for pols in polinomios:
- for coef in pols.coeficientes:
- file.write(f"{coef} ")
- file.write("\n")
- def array_de_polinomios():
- polinomios = []
- with open('polinomios.txt', 'r', encoding='utf-8') as file: # leemos el archivo
- for linea in file:
- coeficientes = []
- for num in linea.split():
- coeficientes.append(int(num))
- polinomios.append(Polinomio(coeficientes))
- return polinomios
- # menu
- def menu_principal():
- while True:
- print("╔═════════════════════════════════╗")
- print("║ ║")
- print("║ 1. Crear un polinomio ║")
- print("║ 2. Listar polinomios ║")
- print("║ 3. Eliminar un polinomio ║")
- print("║ 4. Operar con polinomios ║")
- print("║ 5. Salir ║")
- print("║ ║")
- print("║ Hecho por L. García ║")
- print("╚═════════════════════════════════╝")
- opcion = int(input("Escoge una opción: "))
- if opcion == 1:
- polinomio = crear_polinomio()
- while True: #bucle infinito para añadir robustez en caso de mal input
- respuesta = input("¿Quieres guardar este polinomio? (y/n): ")
- if respuesta.lower() == 'y' or respuesta.lower() == 'yes':
- with open('polinomios.txt', 'a', encoding='utf-8') as file:
- for i, coef in enumerate(polinomio.coeficientes):
- file.write(f"{coef} ")
- file.write("\n")
- break
- elif respuesta.lower() == 'n' or respuesta.lower() == 'no':
- break
- else:
- print("Respuesta inválida")
- elif opcion == 2:
- print('\n')
- listar_polinomios()
- print("\nEsta es la lista de polinomios hasta ahora.")
- while True: # bucle infinito para añadir robustez en el input
- print("m: volver al menú principal x: salir")
- respuesta = input()
- if respuesta.lower() == 'm':
- menu_principal()
- else:
- break
- break
- break
- elif opcion == 3:
- print('\n')
- listar_polinomios()
- eliminar_polinomio()
- print("\nPolinomios eliminado de la lista exitosamente.")
- while True:
- print("\nm: volver al menú principal x: salir")
- respuesta = input()
- if respuesta.lower() == 'm':
- menu_principal()
- else:
- break
- break
- break
- elif opcion == 4:
- print("\n Lista de operaciones:")
- print("══════════════════════════════════════════════")
- print("1) Evaluar un polinomio en un punto dado")
- print("2) Multiplicar un polinomio por un número real")
- print("3) Obtención del polinomio opuesto")
- print("4) Calcular la derivada de un polinomio")
- print("5) Sumar polinomios")
- print("6) Restar polinomios")
- print("7) Multiplicar polinomios")
- print("8) Dividir polinomios")
- print("9) Factorizar un polinomio\n")
- print("¿Qué operación quieres realizar? (1,2,3...):")
- respuesta_op = int(input())
- if respuesta_op == 1: # evaluar polinomio
- polinomios = array_de_polinomios()
- listar_polinomios()
- print("\n¿Qué polinomio deseas evaluar de la lista? (1,2,3...): ")
- input_pol = int(input())
- print("\nEscoja un valor de x sobre el cual quiere evaluar el polinomio seleccionado:")
- input_valor = float(input())
- if input_valor % 1 == 0:
- input_valor = int(input_valor)
- pol = polinomios[input_pol-1]
- valor = pol.evaluar(input_valor)
- print(f"\n{pol} evaluado en {input_valor} es {valor}")
- while True: # bucle infinito para añadir robustez en el input
- print("\nm: volver al menú principal x: salir")
- respuesta = input()
- if respuesta.lower() == 'm':
- menu_principal()
- else:
- break
- break
- if respuesta_op == 2: # multiplicar polinomio por número real
- polinomios = array_de_polinomios()
- listar_polinomios()
- print("\n¿Con qué polinomio deseas operar de la lista? (1,2,3...): ")
- input_pol = int(input())
- print("\nEscoja un valor real por el cual quiere multiplicar el polinomio seleccionado:")
- input_valor = float(input())
- pol = polinomios[input_pol-1]
- if input_valor % 1 == 0:
- input_valor = int(input_valor)
- mul = pol.mul_real(input_valor)
- print(f"\nEl polinomio resultante de multiplicar {pol} por {input_valor} es {mul}")
- while True: # bucle infinito para añadir robustez en el input
- print("\nm: volver al menú principal x: salir")
- respuesta = input()
- if respuesta.lower() == 'm':
- menu_principal()
- else:
- break
- break
- if respuesta_op == 3: # obtener el polinomio opuesto
- polinomios = array_de_polinomios()
- listar_polinomios()
- print("\n¿De qué polinomio deseas obtener su opuesto en la lista? (1,2,3...): ")
- input_pol = int(input())
- pol = polinomios[input_pol-1]
- pol_opuesto = pol.pol_opuesto()
- print(f"\nEl polinomio opuesto a {pol} es {pol_opuesto}")
- while True: # bucle infinito para añadir robustez en el input
- print("\nm: volver al menú principal x: salir")
- respuesta = input()
- if respuesta.lower() == 'm':
- menu_principal()
- else:
- break
- break
- if respuesta_op == 4: # calcular la derivada de un polinomio
- polinomios = array_de_polinomios()
- listar_polinomios()
- print("\n¿Qué polinomio deseas derivar de la lista? (1,2,3...): ")
- input_pol = int(input())
- polinomio = polinomios[input_pol-1]
- pol_derivada = polinomio.derivada()
- print(f"\nLa derivada de {polinomio} es {pol_derivada}")
- while True: # bucle infinito para añadir robustez en el input
- print("\nm: volver al menú principal x: salir")
- respuesta = input()
- if respuesta.lower() == 'm':
- menu_principal()
- else:
- break
- break
- if respuesta_op == 5: # sumar polinomios
- polinomios = array_de_polinomios()
- listar_polinomios()
- print("\nElige el primer sumando (1,2,3...):")
- input_pol1 = int(input())
- print("Elige el segundo sumando (1,2,3...):")
- input_pol2 = int(input())
- polinomio1 = polinomios[input_pol1-1]
- polinomio2 = polinomios[input_pol2-1]
- value = polinomio1.suma_pol(polinomio2)
- print(f"\nLa suma entre ambos polinomios es {value}")
- while True: # bucle infinito para añadir robustez en el input
- print("\nm: volver al menú principal x: salir")
- respuesta = input()
- if respuesta.lower() == 'm':
- menu_principal()
- else:
- break
- break
- if respuesta_op == 6: # restar polinomios
- polinomios = array_de_polinomios()
- listar_polinomios()
- print("\nElige el primer término de la resta (1,2,3...):")
- input_pol1 = int(input())
- print("Elige el segundo término de la resta (1,2,3...):")
- input_pol2 = int(input())
- polinomio1 = polinomios[input_pol1-1]
- polinomio2 = polinomios[input_pol2-1]
- value = polinomio1.resta_pol(polinomio2)
- print(f"\nLa resta entre ambos polinomios es {value}")
- while True: # bucle infinito para añadir robustez en el input
- print("\nm: volver al menú principal x: salir")
- respuesta = input()
- if respuesta.lower() == 'm':
- menu_principal()
- else:
- break
- break
- if respuesta_op == 7: # multiplicar polinomios
- polinomios = array_de_polinomios()
- listar_polinomios()
- print("\nElige el primer término de la multiplicación (1,2,3...):")
- input_pol1 = int(input())
- print("Elige el segundo término de la multiplicación (1,2,3...):")
- input_pol2 = int(input())
- polinomio1 = polinomios[input_pol1-1]
- polinomio2 = polinomios[input_pol2-1]
- value = polinomio1.mul_pol(polinomio2)
- print(f"\nLa multiplicación entre ambos polinomios es {value}")
- while True: # bucle infinito para añadir robustez en el input
- print("\nm: volver al menú principal x: salir")
- respuesta = input()
- if respuesta.lower() == 'm':
- menu_principal()
- else:
- break
- break
- if respuesta_op == 8: # dividir polinomios
- polinomios = array_de_polinomios()
- listar_polinomios()
- print("\nElige el dividendo de la división (1,2,3...):")
- input_pol1 = int(input())
- print("Elige el divisor de la división (1,2,3...):")
- input_pol2 = int(input())
- polinomio1 = polinomios[input_pol1-1]
- polinomio2 = polinomios[input_pol2-1]
- value = polinomio1.div_pol(polinomio2)
- print(f"\nLa división entre ambos polinomios da como cociente {value[0]} y como resto {value[1]}")
- while True: # bucle infinito para añadir robustez en el input
- print("\nm: volver al menú principal x: salir")
- respuesta = input()
- if respuesta.lower() == 'm':
- menu_principal()
- else:
- break
- break
- if respuesta_op == 9: # factorizar polinomios
- polinomios = array_de_polinomios()
- listar_polinomios()
- print("\n¿Qué polinomio deseas factorizar de la lista? (1,2,3...):")
- input_pol = int(input())
- polinomio = polinomios[input_pol-1]
- value = polinomio.factorizar()
- print(f"\nAl factorizar {polinomio} obtenemos como raices {value}")
- elif opcion == 5:
- break
- menu_principal()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement