Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Boris Morales en 12 Octubre 2020, 23:42 pm



Título: Ayudaaa Mi código no ejecuta, estoy aprendiendo :(
Publicado por: Boris Morales en 12 Octubre 2020, 23:42 pm


#Importamos todas las librerías necesarias
from matplotlib.pylab import *
import matplotlib.pyplot as plt
import numpy as np
from math import *
from sympy import *
from sympy.plotting import *
from time import *
from scipy import *
asctime()
clock()
#introducimos los datos
while True:
    try:
        β=float(input("introduzca el ángulo en grados β = "))
        except ValueError:
        print ()
        print("Cantidad Incorrecta")
        print ()
        continue
    break
while True:
    try:
        vi=float(input("introduzca la velocidad inicial en (m/s) vi = "))

    except ValueError:
        print ()
        print("Cantidad Incorrecta")
        print ()
        continue
    break
print ()
θ=((β*pi)/180)
print ("θ=",θ)
g=9.81 # m/s**2
print ()
a=tan(θ)
b=((g)/((2*vi**2)*cos(θ)**2))
print ()
ymax=(vi**2)*(np.sin(θ)*sin(θ))/(2*g)
xmax=(vi**2)*(np.sin(2*θ))/(g)
print ("................................................................................")
print ("................................................................................")
tmax=(vi*sin(θ))/(g)
tv=2*(tmax)
# Salidas de los datos calculados
print (str("La altura máxima  alcanzada por el proyectil es: Ymax")+" = "+str(ymax)+" m")
print (str("El alcance máximo horizontal  del proyectil es: Xmax")+" = "+str(xmax)+" m")
print ("................................................................................")
print ("................................................................................")
print ("La altura máxima (m) alcanzada por el proyectil es: Ymax =",format(ymax,".2f"))
print ("El alcance máximo horizontal(m) del proyectil es: Xmax =",format(xmax," .2f"))
print ("................................................................................")
print ("................................................................................")
print ("El tiempo máximo t1max (s) que alcanza el proyectil para el ángulo β es: t1max =",format(tmax,".2f"))
print ("El tiempo de vuelo t1v(s) que alcanza el proyectil para el angulo β es: t1v =",format(tv,".2f"))
print ("................................................................................")
print ("................................................................................")

# Definimos la ecuación de la trayectoria
def f(x):
    return(a*x-b*x**2)
x=np.linspace(0,xmax,500)
#creamos la figura
plt.figure("FISICA APLICADA",figsize=(10,8),dpi=80,facecolor="y",edgecolor="c")   
plt.axes(axisbg="orange")
# añadimos el titulo
title("LANZAMIENTO DE PROYECTILES",
fontsize=15,color="blue",verticalalignment="baseline",horizontalalignment = "center") 
# añadimos el subtitulo
plt.suptitle("CINEMATICA",fontsize=20,color="red")

#añadimos las etiquetas de los ejes
xlabel("xmax",fontsize=20,color="red")                                     
ylabel("ymax",fontsize=20,color="blue")
#añadimos texto
plt.text(((np.argmax(f(x)))/2),np.max(f(x))+1,"vi=",fontsize=10)
plt.text(((np.argmax(f(x)))/2)+11,np.max(f(x))+1,(str(vi)+"m/s"),fontsize=10)
#mostrar la fecha y la hora actual formateadas :",asctime()
#mostrar el tiempo real de ejecucion de este proceso :",clock()
plt.text(2,np.max(f(x))+1,("fecha/hora:"+str(asctime())),fontsize=10,color="green")
plt.text(2,np.max(f(x))-1,("tiempo(s):"+str(clock())),fontsize=10,color="blue")

# Añadimos la rejilla en la gráfica
plt.grid(True)                                                             
plt.grid(color = '0.5', linestyle = '--', linewidth = 1)
# Añadimos los ejes
# plt.axis("tight")                                     
                 
# dibujamos y ponemos etiquetas a la gráfica
plt.text(3,1,β,fontsize=10)
plt.plot(x, f(x), "red", linewidth = 2, label = (str(β)+"º"))   
# añadimos la leyenda
plt.legend(loc = 4,fontsize=10)                                                         
#anotaciones en el gráfico
plt.annotate('Altura Máxima',
xy = (xmax/2, ymax),
xycoords = 'data',
xytext = (-70, -50),
textcoords = 'offset points',
arrowprops = dict(arrowstyle = "->",
connectionstyle = "arc, angleA = 0,armA = 30,rad = 50"),
# dibujar tabla dentro del gráfico
valores = [[format(np.max(xmax),".2f"),format(np.min(ymax),".2f")]]
etiquetas_col = ["xmax (m)", "ymax (m)"]
plt.table(cellText=valores, colLabels = etiquetas_col, colWidths = [0.15]*len(f(x)),loc='upper right')
# guarda la gráfica con 300dpi (puntos por pulgada)en python34-ejemplos curso python
#plt.savefig("figura_Lanzamiento Proyectiles_1.pdf", dpi = 300)           
# mostramos en pantalla la gráfica
plt.show()


Título: Re: Ayudaaa Mi código no ejecuta, estoy aprendiendo :(
Publicado por: .:Xx4NG3LxX:. en 12 Octubre 2020, 23:51 pm
Te recomiendo poner todo el código entre las balizas:
Código:
[code]TODO TU CÓDIGO AQUÍ
[/code]


Título: Re: Ayudaaa Mi código no ejecuta, estoy aprendiendo :(
Publicado por: tincopasan en 13 Octubre 2020, 02:04 am
hola:
        hay tantas cosas mal que hay que hacer casi todo de nuevo, demasiado código para alguien que está aprendiendo, pero bueno, se puede empezar de a poco y una cosa por vez. No te voy a hacer el código pero si puedo intentar ayudarte paso a paso.
1)
Código
  1. #Importamos todas las librerías necesarias
  2. from matplotlib.pylab import *
  3. import matplotlib.pyplot as plt
  4. import numpy as np
  5. from math import *
  6. from sympy import *
  7. from sympy.plotting import *
  8. from time import *
  9. from scipy import *
  10. asctime()
  11. clock()
  12.  
  13.  

hay librerias que no veo que usas, las agregaremos cuando sean necesarias, para empezar ninguna, lo mismo que las últimas dos funciones declaradas ¿de dónde salen?

2) desde el inicio ya está mal
Citar
#introducimos los datos
while True:
    try:
        β=float(input("introduzca el ángulo en grados β = ")) -#que ganas de complicar el nom,bre de las variables
        except ValueError: #desde acá está mal la indentación
        print ()
        print("Cantidad Incorrecta")
        print ()
        continue
    break
while True:
    try:
        vi=float(input("introduzca la velocidad inicial en (m/s) vi = "))

    except ValueError:
        print ()
        print("Cantidad Incorrecta")
        print ()
        continue
    break
print ()

hasta acá la lógica está incorrecta, te muestro como haría uno y vos modificas el otro.

Código
  1. while True:
  2.    try:
  3.        angulo=float(input("introduzca el ángulo en grados β = ")) #usemos variables significativas
  4.        break
  5.    except ValueError:
  6.        print("\nCantidad Incorrecta\n")
  7. print(angulo)#no es necesario, lo uso para que vayamos viendo el resultado
  8.  
 

modifica el otro while

3)
Citar
θ=((β*pi)/180)
tambíen hay que cambiar el nombre de la variable, no es obligatorio, pero si recomendable y ahora necesitamos obtener "pi"

tu codigo:

Código
  1. from math import *

si bien no está mal, estas cargando en memoria datos innecesarios, sería mejor:

Código
  1. from math import pi

si al fin y al cabo es lo único que usaremos por ahora.

Código
  1. grados=((angulo*pi)/180)

en fin, pocas líneas muchas cosas incorrectas, si las modificas y las posteas vemos de seguir, sino espera que alguien te corrija todo el código.

Saludos


Título: Re: Ayudaaa Mi código no ejecuta, estoy aprendiendo :(
Publicado por: Boris Morales en 13 Octubre 2020, 04:46 am
.:Xx4NG3LxX:.

tincopasan

Muchas gracias a ambos por sus consejos, y si realmente me estaba basando de algunos videos y foros por eso el exceso de info. Pero me gusta de verdad aprender de los mejores así que si efectivamente lo seguiré intentando  ::)


Título: Re: Ayudaaa Mi código no ejecuta, estoy aprendiendo :(
Publicado por: Boris Morales en 17 Octubre 2020, 20:43 pm
Código
  1. [color=yellow][/color]

Estimado tincopasan, no se si aún siga por aquí tarde un poco pero ya le hice correcciones, lo que no entiendo es por que al sacar el coseno en "vxO"  :-\


from math import pi
from math import tan
from math import cos
from math import sin
import numpy as np
import matplotlib.pyplot as plt

while True:
    try:
        vi = float(input("Introduzca la velocidad inicial en (m/s) : "))
        break
    except ValueError:
        print("Cantidad Incorrecta")
print("m/s =",vi)

while True:
    try:
        angulo = float(input("Introduzca el ángulo en grados: "))
        break
    except ValueError:
        print("\nCantidad Incorrecta\n")
print(angulo,"°")#no es necesario, lo uso para que vayamos viendo el resultado

while True:
    try:
        g = float(input("Introduzca el valor de gravedad en m/s^2: "))
        break
    except ValueError:
        print("\nCantidad Incorrecta\n")
print("\ng =",g)

grados = ((angulo*pi)/180)
print ("\ngrados =",grados)

while True:
    try:
        xo = float(input("Posición horizontal inicial [x0]: "))
        break
    except ValueError:
        print("\nCantidad Incorrecta\n")

while True:
    try:
        yo = float(input("Posición vertical inicial [y0]: "))
        break
    except ValueError:
        print("\nCantidad Incorrecta\n")


print()
a = tan(grados)
b = ((g)/((2*vi**2)*cos(grados)**2))
print()
ymax=(vi**2)*(np.sin(grados)*sin(grados))/(2*g)
xmax=(vi**2)*(np.sin(2*grados))/(g)
vho = (cos(angulo))
print("Un cuerpo lanzado con una velocidad inicial de Vo=",vi,"m/s y un ángulo de α=",angulo,"°,")
print("iniciará su trayectoria con una velocidad horizontal de vxO: ",vho)
print("----------------------------------------------------------------------")
print("----------------------------------------------------------------------")
tmax=(vi*sin(grados))/(g)
tv=2*(tmax)
print()
print(str("La altura máxima  alcanzada por el proyectil es: Ymax")+" = "+str(ymax)+" m")
print(str("El alcance máximo horizontal  del proyectil es: Xmax")+" = "+str(xmax)+" m")
print("----------------------------------------------------------------------")
print("----------------------------------------------------------------------")
print("La altura máxima (m) alcanzada por el proyectil es: Ymax =",format(ymax,".2f"))
print("El alcance máximo horizontal(m) del proyectil es: Xmax =",format(xmax," .2f"))
print("----------------------------------------------------------------------")
print("----------------------------------------------------------------------")
print("El tiempo máximo t1max (s) que alcanza el proyectil para el ángulo β es: t1max =",format(tmax,".2f"))
print("El tiempo de vuelo t1v(s) que alcanza el proyectil para el angulo β es: t1v =",format(tv,".2f"))
print("----------------------------------------------------------------------")
print("----------------------------------------------------------------------")


Me podrian orientar que falta por que en el coseno de 60° me da -0.9524129804151563 :(



Título: Re: Ayudaaa Mi código no ejecuta, estoy aprendiendo :(
Publicado por: Tachikomaia en 17 Octubre 2020, 21:04 pm
Yo lo que sé es que en QBASIC, Clipper y Macromedia Flash 5, no se requiere importar cosas. Los 2 1eros no me acuerdo bien, quizá me equivoque. Y MF5 tal vez para los sonidos o algo que no recuerdo.

Yo en tu lugar cambiaría de lenguaje.


Título: Re: Ayudaaa Mi código no ejecuta, estoy aprendiendo :(
Publicado por: Boris Morales en 17 Octubre 2020, 21:17 pm
Tachikomaia

Rayos jaja es que ya me había animado en esto, pero si no hay otra manera si tendré que cambiarlo :((


Título: Re: Ayudaaa Mi código no ejecuta, estoy aprendiendo :(
Publicado por: tincopasan en 17 Octubre 2020, 21:20 pm
hola:
el problema que tienes es que la función coseno es en base a radianes no  a grados por lo tanto podrías agregar:
Código
  1. from math import radians
  2.  
  3. vho = (cos(radians(angulo)))
  4.  
  5.  

Edito:

otra cosa:
Código
  1. from math import pi
  2. from math import tan
  3. from math import cos
  4. from math import sin
  5.  

es más simple:

Código
  1.  
  2. from math import pi, tan, cos, sin
  3.  

PD: si vas a dejar por cada cosa que no puedas hacer, no intentes programar , sin importar el lenguaje.


Título: Re: Ayudaaa Mi código no ejecuta, estoy aprendiendo :(
Publicado por: Tachikomaia en 17 Octubre 2020, 22:55 pm
Muy profundo, pero no olvidemos Brainfuck y similares y que el OP está haciendo algo que parece mucho más complicado de lo que parece saber hacer. Debería intentar cosas de dificultad menor.


Título: Re: Ayudaaa Mi código no ejecuta, estoy aprendiendo :(
Publicado por: Boris Morales en 18 Octubre 2020, 02:18 am
Bien muchas gracias en verdad a ambos por sus conocimientos

Y tincopasan, una disculpa, jamás fue mi intención molestar u ofender