一、主要目的:
1.了解模块、包、库的概念、区别和联系。
2.掌握常用标准库模块的功能和使用方法。
3.掌握常用第三方库的功能和使用方法。
4.掌握自定义模块的创建和使用方法。
二、主要内容和结果展示:
1.使用Turtle 模块绘制一个五角星。
import turtle
turtle.penup()
turtle.goto(-150,0)
turtle.pendown()
turtle.pencolor('red')
for i in range(5):
turtle.forward(300)
turtle.right(144)
turtle.done()
2. 使用 Datetime 模块获取当前时间,并指出当前时间的年、月、日、周数,以及当天是该周的第几天?
from datetime import datetime,timedelta
d = datetime.now()
print("当前时间是",d.date())
print("周数为",int(d.day / 7)+1)
print("当天是该周第",d.isoweekday(),"天")
3. 使用 Os模块获取当前项目工作路径,并输出当前工作路径下的所有文件。
import os
print("当前项目工作路径:",os.getcwd())
print("当前工作路径下的所有文件:",os.listdir())
4. 编写一个计算1+2+..+10000的函数,使用 Timeit 模块计算该函数的执行时间。
import timeit
def func():
sum = 0
for i in range(1,10001):
sum += i
t = timeit.timeit(stmt = func, number = 1)
print("t=",t
5. 使用Random模块和 NumPy 库生成一个3行4列的多维数组,数组中的每个元素为 1~100之间的随机整数,然后求该数组所有元素的平均值。
import numpy as np
import random
list1=[]
sum = 0
for x in range(12):
y = random.randrange(1,101)
list1.append(y)
sum += y
array1=np.array(list1).reshape(3,4)
print(array1)
print("所以元素的平均值为",sum/12)
6.使用 Pandas 库创建一个数据帧 (DataFrame),然后输出某行、某列和某个单元格的数据。
import pandas as pd
data = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
df = pd.DataFrame(data)
print(df)
7. 使用 Matplotlib 库绘制y=2x+1和y=x^2的图形,并设置坐标轴的名称和图例。
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-1,1,50)
y1 = 2*x + 1
plt.figure()
plt.plot(x,y1,'r')
y2 = x**2
plt.figure()
plt.plot(x,y2,'b')
plt.show()
9.自定义一个模块,然后在其他源文件中进行调用、测试。
A12.py
def func_A12():
return 'A12 in Pack1'
A11.py
import A12
print(A12.func_A12())
三、心得体会
了解了模块化编程的概念及其在Python中的应用之后,我在实际项目中应用了这些知识,这让我深刻感受到了模块化编程的便利性。以下是我对各项知识点的应用和理解:
1. 模块、包、库的概念:
- 模块:一个包含Python定义和声明的文件,其后缀名为.py。模块可以被其他程序引用,增加代码的复用性。
包:一个含有多个模块的文件夹,并且该文件夹下有一个`__init__.py`文件,标识这是一个包。
库:通常是一个广义的概念,指的是一组功能相关的模块和包的集合,可以提供一系列的功能扩展。
2. 标准库模块的使用:
Turtle模块:通过使用Turtle模块画图,我学习了如何控制图形和理解了循环的使用。
Datetime模块:学会了如何处理日期和时间,这对于任何需要时间数据处理的程序都极为重要。
Os模块:理解了如何进行文件和目录的管理,以及如何与操作系统进行交互。
3. 第三方库的使用:
NumPy和Pandas:我通过使用这两个库处理和分析数据,它们是数据科学领域非常重要的工具。
Matplotlib:通过数据可视化,我加深了对数据分布和函数关系的理解。
4. 自定义模块的创建与使用:
学会了如何创建和使用自定义模块,这对于代码的组织和重用非常有帮助。
5. 性能评估:
使用timeit模块来评估代码性能,这对于编写高效的代码很有帮助。
6. 实践中的挑战:
在使用Pandas选择数据或使用NumPy生成数组时遇到了困难,通过阅读文档和社区讨论,我解决了这些问题。