plt.show(), displays a window, but there's no curve on it.
My code:
In [1]: import math
In [2]: import numpy as np
In [3]: import matplotlib.pyplot as plt
In [4]: Lm=0
In [5]: for angle in np.arange(0.0,90.0,0.1):
...: theta = angle*math.pi/180
...: L=0.25*(math.cos(theta))*(5*math.sin(theta)+math.sqrt(25*math.sin(theta)*math.sin(theta)+80))
...: print(L,"\t",angle)
...: if L>Lm:
...: Lm=L
...:
In [6]: plt.figure(1)
Out[6]: <matplotlib.figure.Figure at 0x284e5014208>
In [7]: for angle in np.arange(0.0,90.0,0.1):
...: celta = angle*math.pi/180
...: L=0.25*(math.cos(theta))*(5*math.sin(theta)+math.sqrt(25*math.sin(theta)*math.sin(theta)+80))
...: plt.figure(1)
...: plt.plot(angle,L)
...:
In [8]: plt.show()
Output

plt.plot, aLinesobject is added to theFigureinstance. ALinesobject tries to make lines between the points given in order (linear interpolation). Now the problem is that to make a line one needs at least two points, but with every single call ofplt.plotyou create aLinesobject with only one point. That is why you don't see anything. Use NumPy's universal functionssinandcosinstead and let them work with arrays instead.