Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import math #Pi, Raíz Cuadrada y ArcCoseno.
- n = 1 #Para cumplir el bucle "while n>0"
- a = 0 #Para evitar que se intente operar sin definir los Vectores A y B.
- while n>0:
- #Menú con todas las opciones.
- print("1. Introducir el vector A.")
- print("2. Introducir el vector B.")
- print("3. Calcular la suma.")
- print("4. Calcular la diferencia.")
- print("5. Calcular el producto escalar.")
- print("6. Calcular el producto vectorial.")
- print("7. Calcular el ángulo (En Grados) entre ellos.")
- print("8. Calcular la longitud.")
- print("9. Finalizar")
- Option = int(input("Introduzca la acción que desea ejecutar: "))
- print(" ")
- #Error al seleccionar una opción que no esté dentro de 1 a 10.
- #¡Recordar que la función 'in range (x,y)' coje hasta el y-1!
- if Option not in range (1,10):
- print("La opción",Option,"no es válida, intentélo de nuevo.")
- print(" ")
- #Dependiendo de la opción seleccionada por el usuario el programa irá ejecutando el if necesario.
- if Option == 1:
- print("Vector A")
- X1 = int(input("Introduce la x:"))
- Y1 = int(input("Introduce la y:"))
- Z1 = int(input("Introduce la z:"))
- print("Vector A = (",X1,",",Y1,",",Z1,")")
- a+=2 #Control de que los Vectores A y B han sido definidos.
- print(" ")
- if Option == 2:
- print("Vector B:")
- X2 = int(input("Introduce la x:"))
- Y2 = int(input("Introduce la y:"))
- Z2 = int(input("Introduce la z:"))
- print("Vector B = (",X2,",",Y2,",",Z2,")")
- a+=2 #Control de que los Vectores A y B han sido definidos.
- print(" ")
- if Option == 9:
- a = 2
- print("¡Hasta Pronto!")
- n=-1 #El bucle no se cumplirá y el programa acabará. (Más elegante que un 'Break')
- if a == 0:
- #Los anteriores if dan a la 'a' el valor de 4, si a no es 4, los Vectores A y B no se han definido.
- print("Error, los vectores A y B no han sido definidos.")
- print(" ")
- #En caso de que a>2, empiezan las operaciones matemáticas. (Puede solo un vector estar definido.)
- if a>=2:
- if Option == 3:
- if a==2: #La 'a' no ha alcanzado 4 y vale 2, solo se ha definido un vector.
- print("Solo se ha definido un vector.")
- else:
- print("Suma de A+B:")
- print("A + B = (",X1+X2,",",Y1+Y2,",",Z1+Z2,")")
- print(" ")
- if Option == 4:
- if a==2: #La 'a' no ha alcanzado 4 y vale 2, solo se ha definido un vector.
- print("Solo se ha definido un vector.")
- else:
- print("Diferencia:")
- print("a) A-B")
- print("b) B-A")
- R = input("Seleccione la Opción:") #Se presentan las dos opciones de una resta.
- if R=="a" or R=="A":
- print("A - B = (",X1-X2,",",Y1-Y2,",",Z1-Z2,")")
- print(" ")
- elif R=="b" or R=="B":
- print("B - A = (",X2-X1,",",Y2-Y1,",",Z2-Z1,")")
- print(" ")
- else: #Código de opcion incorrecta.
- print("La opción",R,"no es válida, intentélo de nuevo.")
- if Option == 5:
- if a==2: #La 'a' no ha alcanzado 4 y vale 2, solo se ha definido un vector.
- print("Solo se ha definido un vector.")
- else:
- print("Producto Escalar:")
- print("A · B =",X1*X2+Y1*Y2+Z1*Z2)
- print(" ")
- if Option == 6:
- if a==2: #La 'a' no ha alcanzado 4 y vale 2, solo se ha definido un vector.
- print("Solo se ha definido un vector.")
- else: #Se presentan las dos opciones de una resta.
- print("Producto Vectorial:")
- print("a) A x B")
- print("b) B x A")
- R2 = input("Seleccione la Opción:")
- if R2=="a" or R2=="A":
- print("A x B = (",Y1*Z2-Z1*Y2,",",Z1*X2-X1*Z2,",",X1*Y2-Y1*X2,")")
- print(" ")
- elif R2=="b" or R2=="B":
- print("B x A = (",Y2*Z1-Z2*Y1,",",Z2*X1-X2*Z1,",",X2*Y1-Y2*X1,")")
- print(" ")
- else: #Código de opcion incorrecta.
- print("La opción",R2,"no es válida, intentélo de nuevo.")
- if Option == 7:#¡Opción con definición de errores matemáticos!
- if a==2:
- print("Solo se ha definido un vector.")
- else: #Los tres primeros, son errores matemáticos.
- print("Angulo entre A y B.")
- if (X1**2+Y1**2+Z1**2)==0 or (X2**2+Y2**2+Z2**2)==0: #x/0
- print("Se ha producido una división entre zero.")
- print(" ")
- elif (X1**2+Y1**2+Z1**2)<0 or (X2**2+Y2**2+Z2**2)<0: #Skeret(-x)
- print("Se ha producido una raíz cuadrada negativa.")
- print(" ")
- elif X1-X2==0 and Y1-Y2==0 and Z1-Z2==0:
- #¡Había un problema con los decimales al dividir x/x no daba 1, y el ArcCoseno no era posible de >1.
- print("0°")
- print(" ")
- else: #En caso de no-error, esta es la operación matemática.
- M1 = math.acos((X1*X2+Y1*Y2+Z1*Z2)/((math.sqrt(X1**2+Y1**2+Z1**2))*(math.sqrt(X2**2+Y2**2+Z2**2))))
- M2 = (180/(math.pi))*M1
- print(M2,"°")
- print(" ")
- if Option == 8:
- if a==2:
- print("Advertencia: Solo se ha definido un vector.") #Se puede operar igualmente con un solo vector, solo avisa.
- print("Longitud de un vector:")
- print("a) Longitud de A.")
- print("b) Longitud de B.")
- R3 = input("Seleccione la Opcion:")
- if R3 == "a" or R3 == "A":
- if (X1**2+Y1**2+Z1**2)<0: #Math Error 1.
- print("Se ha producido una raíz cuadrada negativa.")
- else:
- M3 = math.sqrt(X1**2+Y1**2+Z1**2)
- print("Longitud del Vector A:",M3)
- print(" ")
- elif R3 == "b" or R3 == "B": #Math Error 2.
- if (X2**2+Y2**2+Z2**2)<0:
- print("Se ha producido una raíz cuadrada negativa.")
- else:
- M4 = math.sqrt(X2**2+Y2**2+Z2**2)
- print("Longitud del Vector B:",M4)
- print(" ")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement