【Educoder作业】※ 绘制炸弹轨迹 V——绘制多条轨迹
【Educoder作业】※ 绘制炸弹轨迹 V——绘制多条轨迹学习了函数,相比于C++C++C++来讲方便得多,因为返回的数据类型、返回几个变量、默认值的设置都好用的很。T1 定义函数写一个函数表示输出即可。########## Begin ##########def Pr() :print('Hello World!')print('----------')Pr()Pr()Pr()########
【Educoder作业】※ 绘制炸弹轨迹 V——绘制多条轨迹
学习了函数,相比于 C + + C++ C++来讲方便得多,因为返回的数据类型、返回几个变量、默认值的设置都好用的很。
T1 定义函数
写一个函数表示输出即可。
########## Begin ##########
def Pr() :
print('Hello World!')
print('----------')
Pr()
Pr()
Pr()
########## End ##########
T2 参数
关于默认值,要保证定义了默认值的右侧不再出现未定义的变量即可。而且函数里传参量,函数会认为是从左到右赋值
########## Begin ##########
def sumMtoN(m = 1, n = 100) :
L = [i for i in range(m, n + 1)]
print(sum(L))
########## End ##########
sumMtoN() #从1加到100
sumMtoN(50) #50赋给了m还是n?
sumMtoN(101, 200)#从101加到200
T3 返回值
注意一下 P y t h o n Python Python里的除法会自动把变量转换成 f l o a t float float,所以我们用 i n t ( ) int() int()函数把他转回整数
########## Begin ##########
def Sum(x, y) :
return (x + y) * (y - x + 1) / 2
print(int(Sum(1, 10)) ** 2)
print(Sum(31, 50) / 20)
print(int(Sum(40, 89)) % 7)
########## End ##########
T4 使用函数
没啥好说的,定义一个算面积的函数就行
import math
########## Begin ##########
def Sq(a, b, c) :
p = (a + b + c) / 2
return math.sqrt(p * (p - a) * (p - b) * (p - c))
S = Sq(9.8, 9.3, 6.4) - Sq(2.9, 4.1, 4.7) + Sq(2.0, 1.4, 2.3)
########## End ##########
print('%.1f' % S)
T5 绘制四条轨迹
import numpy as np
import matplotlib.pyplot as plt
########## Begin ##########
g, n = 9.8, 30
def calBombTrace(h, v0):
tmax = (2 * h / g) ** 0.5
t = np.linspace(0, tmax, n)
xt = v0 * t; yt = h - 0.5 * g * t ** 2
return xt, yt
########## End ##########
xt, yt = calBombTrace(3000, 200) #计算第1种情况时n个点的坐标
plt.plot(xt,yt,'r-') #绘制第1种情况对应的轨迹
xt, yt = calBombTrace(3000, 260) #计算第2种情况时n个点的坐标
plt.plot(xt,yt,'r-') #绘制第2种情况对应的轨迹
xt, yt = calBombTrace(2000, 200) #计算第3种情况时n个点的坐标
plt.plot(xt,yt,'r-') #绘制第3种情况对应的轨迹
xt, yt = calBombTrace(2000, 260) #计算第4种情况时n个点的坐标
plt.plot(xt,yt,'r-') #绘制第4种情况对应的轨迹
plt.grid('on')
plt.axis([0, 6500, 0, 3000])
plt.show()
plt.savefig( 'src/step5/student/pic.png' )
plt.close()
T6 绘制更多条轨迹
跟上一个题一样,就是在循环里用函数
import numpy as np
import matplotlib.pyplot as plt
########## Begin ##########
H = [3000, 2000, 1000]
V0 = [200, 260, 230]
g, n = 9.8, 30
def Output(h, v0) :
tmax = (2 * h / g) ** 0.5
t = np.linspace(0, tmax, n)
return v0 * t, h - 0.5 * g * t ** 2
for h in H :
for v0 in V0 :
xt, yt = Output(h, v0)
plt.plot(xt, yt, 'r-')
plt.grid('on')
plt.axis([0, 6500, 0, 3000])
plt.show()
########## End ##########
plt.savefig( 'src/step6/student/pic.png' )
plt.close()
更多推荐
所有评论(0)