【Educoder python 作业答案】国防科技大学《大学计算机基础》Python入门-绘制炸弹轨迹 ※
- 第1关:绘制一个坐标点
- 第2关:绘制n个坐标点
- 第3关:绘制一条轨迹
- 第4关:更简单的绘制一条轨迹
- 第5关:绘制多条轨迹
第1关:绘制一个坐标点
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt #导入matplotlib.pyplot
h, v0, g = 3000, 200, 9.8
for t in [10, 15, 20, 24]:
xt = v0*t
yt = h-1/2*g*t**2
plt.ylim((0, 3000))
plt.xlim((0, 5000))
plt.grid('on')
######## begin ############
# 请使用plot函数,绘制一个坐标点
plt.plot(xt, yt, 'ro')
######## end ##############
plt.savefig('./student result/%s秒后.png' % str(t))
plt.close()
第2关:绘制n个坐标点
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt #导入matplotlib.pyplot
h, v0, g = 3000, 200, 9.8
t, n = 0, 30 #n为要绘制的坐标点数量,假设为30
tmax = (2*h/g)**0.5
delta = tmax/(n-1) #delta为相邻两时刻之间的间隔
while t<=tmax: #t从0变到tmax,每次加delta
###### begin ##########
# 请在此填写表达式,计算时间为t时,x轴与y轴的位置,并命名为xt与yt
xt = v0*t
yt = h-1/2*g*t**2
######### end ############
plt.plot(xt,yt,'ro')
t = t+delta
plt.grid('on')
plt.axis([0, 5000, 0, h])
plt.savefig('./student result2/%s个点.png' % str(n))
plt.close()
第3关:绘制一条轨迹
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt #导入matplotlib.pyplot
h, v0, g = 3000, 200, 9.8
n = 30
xt, yt = [], []
tmax = (2*h/g)**0.5
delta = tmax/(n-1)
for i in range(n):
t = delta*i
xt.append(v0*t)
yt.append(h-1/2*g*t**2)
#### begin ###########
# 请使用plot函数绘制一条线
plt.plot(xt,yt,'r-')
plt.grid('on')
plt.axis([0, 5000, 0, h])
#### end ##############
plt.grid('on')
plt.axis([0, 5000, 0, h])
plt.savefig('./student result3/轨迹.png')
plt.close()
第4关:更简单的绘制一条轨迹
import numpy as np
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt #导入matplotlib.pyplot
h, v0, g, n = 3000, 200, 9.8, 30
tmax = (2*h/g)**0.5
########### begin ##############
# 请使用numpy的linspace函数,在[0, tmax]上平均取30个点
delta = tmax/(n-1)
T = [i*delta for i in range(n)] #生成n个时刻
########## end #################
xt = [v0*t for t in T] #计算n个时刻的横坐标
yt = [h-1/2*g*t**2 for t in T] #计算n个时刻的纵坐标
plt.plot(xt, yt, 'r-')
plt.grid('on')
plt.axis([0, 5000, 0, h])
plt.savefig('./student result4/轨迹.png')
plt.close()
第5关:绘制多条轨迹
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt #导入matplotlib.pyplot
h, v0, g = 3000, 200, 9.8
for t in [10, 15, 20, 24]:
xt = v0*t
yt = h-1/2*g*t**2
plt.ylim((0, 3000))
plt.xlim((0, 5000))
plt.grid('on')
######## begin ############
# 请使用plot函数,绘制一个坐标点
plt.plot(xt, yt, 'ro')
######## end ##############
plt.savefig('./student result/%s秒后.png' % str(t))
plt.close()