E d u c o d e r Educoder Educoder作业】绘制炸弹轨迹 II——绘制 n 个坐标点

T 1 T1 T1 解决问题1的准备工作:分支

判断就行,需要注意的是 m = = 1 o r   m = = 3 m == 1or\ m==3 m==1or m==3 m = = 1 o r 3 m == 1 or 3 m==1or3是不一样的。牵着表示的是判断 m m m 1 1 1还是 3 3 3,后者必定返回 T r u e True True

m = eval(input())
########## Begin ##########
if m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12 :
    print('yes')
else :
    print('no')
########## End ##########

T 2 T2 T2 在合理范围绘制一个坐标点

其本质还是一个特判。

import math
########## Begin ##########
import matplotlib.pyplot as plt #导入库
h, v0, g = 3000, 200, 9.8       #设置参数值
t = eval(input())               #读取时刻t
tmax = math.sqrt(2 * h / g)
if t < 0 or t > tmax :
    print('输入错误')
else :
    print('绘制坐标')
    xt = v0*t                       #计算横坐标
    yt = h-1/2*g*t**2               #计算纵坐标
    plt.plot(xt,yt,'ro')            #绘制点(xt,yt)
    plt.grid('on')                  #显示网格线
    plt.axis([0,5000,0,h])          #设置坐标轴范围
    plt.show()                      #显示图形
########## End ##########

T 3 T3 T3 解决问题2的准备工作:while循环

这个题目是容易的,关键是明白他和 C + + C++ C++中的 w h i l e while while循环没有任何区别。都是先判断,再进循环,每次结束之后都判断。特别注意,别忘了每次更改循环变量。

########## Begin ##########
i = 1
ans = 0;
while i < 1000 :
    ans += i
    i += 2
print(ans)
########## End ##########

T 4 T4 T4 绘制n个坐标点

我们跟炸弹过不去了…就是各种绘制炸弹,这个题就是绘制 n n n个坐标,用 w h i l e while while循环实现即可。

import math
########## Begin ##########
import matplotlib.pyplot as plt #导入库
h, v0, g = 3000, 200, 9.8       #设置参数值
t = 0
n = 30

tmax = (2 * h / g) ** 0.5

dlt = tmax / (n - 1)
while t <= tmax : 
    xt = v0*t                       #计算横坐标
    yt = h-1/2*g*t**2               #计算纵坐标
    plt.plot(xt,yt,'ro')            #绘制点(xt,yt)
    t += dlt
plt.grid('on')                  #显示网格线
plt.axis([0,5000,0,h])          #设置坐标轴范围
plt.show()                      #显示图形
########## End ##########

plt.savefig( 'src/step4/student/pic.png' )
plt.close()

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐