Python计算思维训练——数组和曲线绘制练习(⼆)
第1关:展⽰数组切⽚
任务描述
本关任务:将指定程序切⽚输出的答案填写出来。
相关知识
为了完成本关任务,你需要掌握 Python的切⽚操作。
Python切⽚操作
在Python中,对于具有序列结构的数据类型来说,是可以使⽤切⽚操作,这也算是Python语⾔的⼀⼤特⾊。需要注意的是,序列对象某个索引位置返回的是⼀个元素,⽽切⽚操作返回的是和被切⽚对象具有相同类型对象的副本,也就是切⽚得到的对象⾥的元素均来⾃于被切⽚对象。
想使⽤切⽚访问,就要知道切⽚的书写格式:
[start det]
start表⽰起点;
end表⽰终点;
det表⽰访问时下标每次的增量,即步长。
如果det值为1,那么实际上就是获取list对象中下标在[start, end)之间的所有元素(注意,这是数学上的左闭右开区间)。
对于det属于任意⾮0整数的情况,实际上就是获取list对象中下标分别是:
start start+det start+det2 …… start+det i
的元素构成的新列表,其中|start+det*i| < |end|,且i∈N,注意双竖线||表⽰取⾥⾯的绝对值,因为要考虑负数下标的问题。
和⼀些⾼级编程语⾔中函数的参数列表中的默认参数类似,这⾥的变量也有默认值,默认情况下start是0,end是整个list的长度,det是1,所以我们也应该遵守相关使⽤默认参数的规则,如果某⼀个参数不使⽤默认值,那么其前⾯的参数也都不是之前所说的默认值,所以在python中表现的就是可以只⽤1个冒号,也可以⽤2个冒号。
最后,看⼀些实例来加深我们的理解吧!
#⽣成⼀个长度为10,且具有与下标⼀⼀对应的元素序列
a = [i for i in range(10)]
#输出数组a前3个元素
linspace numpy
print(a[:3])
#输出数组a后2个元素
print(a[:-3:-1])
#输出数组a中下标为偶数的元素
print(a[::2])
#逆序输出数组a
print(a[::-1])
输出:
[0, 1, 2]
[9, 8]
[0, 2, 4, 6, 8]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
编程要求
填空:将以下代码的输出结果,直接写在右侧编辑框中。
import numpy as np
w = np.array([i*0.1 for i in range(0,31)])
print(w)
print(w[:])
print(w[:-2])
print(w[::5])
print(w[2:-2:6])
PS:为了更好地检验⼤家的学习情况,请不要直接运⾏代码。
测试说明
平台会对你编写的答案进⾏检验。
开始你的任务吧,祝你成功!
[0.0.10.20.30.40.50.60.70.80.91.1.11.21.31.41.51.61.7
1.81.9
2.2.12.22.32.42.52.62.72.82.9
3.]
[0.0.10.20.30.40.50.60.70.80.91.1.11.21.31.41.51.61.7
1.81.9
2.2.12.22.32.42.52.62.72.82.9
3.]
[0.0.10.20.30.40.50.60.70.80.91.1.11.21.31.41.51.61.7
1.81.9
2.2.12.22.32.42.52.62.72.8]
[0.0.51.1.52.2.53.]
[0.20.81.42.2.6]
第2关:绘制公式
任务描述
本关任务:编写⼀个能绘制指定公式的⼩程序。
相关知识
为了完成本关任务,你需要掌握matplotlib.pyplot的基本使⽤
matplotlib.pyplot的基本使⽤
在之前的实训 绘制函数 中,我们已经学会了关于matplotlib.pyplot的⼀些基本⽤法,但是只能把数据描绘成图像。⽽⼀个完成的图形,应该还要有⼀些⽂字说明,⽐如横、纵坐标的含义。
⽰例程序:
#绘制函数y=x^2 + 1,并添加横纵坐标信息
import numpy as np
from matplotlib import pyplot as plt
#⽣成横坐标
x = np.linspace(-5, 5, 40)
#⽣成纵坐标
y = x**2 + 1
#描绘函数图像
plt.plot(x, y)
#添加横坐坐标信息
plt.xlabel(‘X Axis’)
#添加纵坐标信息
plt.ylabel(‘Y Axis’)
plt.show()
输出:
编程要求
函数,给定参数v0和g的值,在区间[0, 2*v0/g]上,取50个点,绘制函数y关于t的函数图像。
要求指明⾃变量t和因变量y所在坐标轴,t所在轴的坐标标签为time(s),y所在轴的坐标标签为height(m)
。根据提⽰,在右侧编辑器补充代码,绘制出指定参数的函数图像。
测试说明
平台会对你编写的代码进⾏测试:
测试输⼊:v0 = 5,g = 10;
预期输出:
— 开始你的任务吧,祝你成功!
class Solution:
def solve(self, v0, g):
"""
:type v0, g: int, int
:rtype: None
"""
#请在此按照“编程要求”填写代码
#********** Begin *********#
import numpy as np
from matplotlib import pyplot as plt
#⽣成横坐标
x = np.linspace(0.0,2*v0/g,50)
#⽣成纵坐标
y = v0*x-1/2*g*x*x
#描绘函数图像
plt.plot(x, y)
#添加横坐坐标信息
plt.xlabel('time(s)')
#添加纵坐标信息
plt.ylabel('height(m)')
plt.show()
##********** End **********#
plt.savefig("step2/stu_img/student.png")
第3关:绘制多参数公式
任务描述
本关任务:编写⼀个能绘制多参数公式图像的⼩程序。
相关知识
为了完成本关任务,你需要掌握matplotlib.pyplot的基本⽤法。
matplotlib.pyplot的基本⽤法
通过之前的学习我们已经能够绘制⼀个函数的图像,并且能为其添加⼀些简单的坐标信息。然⽽,在⽣活中,我们往往可以通过⽐较多种函数的形状,来更好地分析数据,那么如何能够将多个函数显⽰在同⼀张图形中呢?只需要添加语句pyplot.hold(‘on’)即可,其含义表⽰后⾯的绘制操作都在同⼀张图上完成。
假设我们要同时绘制图形y=x^2和y = x+1,可以这样写:
import numpy as np
from matplotlib import pyplot as plt
#取区间[-5, 5]中40个点作横坐标
x = np.linspace(-5, 5, 40)
#计算横坐标在函数y=x^2中对应的函数值
y1 = x**2
#计算横坐标在函数y=x+1中对应的函数值
y2 = x+1
#绘制图像y=x^2
plt.plot(x, y1)
#设置后续绘制都在同⼀张图形上完成
plt.hold(‘on’)
#绘制图像y=x+1
plt.plot(x, y2)
plt.show()
⽰例输出:
编程要求
根据输⼊的⼀组v0值,将函数在不同v0值下对应的曲线绘制在同⼀张图中,其中g=9.81,且t∈[0, 2*v0/g]。根据提⽰,在右侧编辑器补充代码,完成编程要求。
提⽰:每条曲线需要不同的t坐标向量。
测试说明
平台会对你编写的代码进⾏测试:
测试输⼊:v0 = [1, 2, 3, 4, 5]
预期输出:
开始你的任务吧,祝你成功!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。