上节课作业 1.修改输入一个年月日日期,输出是星期几的程序,闰年判断做成函数,统计天数作成函数,星期计算做成函数 代码如下: 2.求图形面积函数增加平行四边形,梯形 做成模块 前面这个求各种图形面积的程序,如果后续陆续要增加更多的图形,则会导致这个程序越做越长,看起来很不方便 并且还有一个需求无法满足,假如有2个同学在做这个项目,一个人已经做好了3个图形的计算方法函数,另外一个人做好了2个图形的计算方法,怎样才能更方便的将2个人的代码整合到一起呢?假如有更多的人在做更多的图形,而且使用函数的也是其它的更多人,那么如何组织这些代码才能更有逻辑呢? 模块能够让你更有逻辑的组织你的python代码块。 简单的说,模块就是一个保存了python代码的文件。模块能够定义函数,类和变量。模块里也能包含可执行的代码。 将上面这个包含了5个图形计算面积函数的文件另存为area.py,然后只保留这5个函数,将其它代码删除: 在另一个文件里导入模块 使用import module1[,module2[,... moduleN] 来导入模块 例如刚才做好了area.py,要导入这个模块,则在代码前面使用import area 来完成 然后使用 area.triangle(base,high) 来访问模块里面的函数 具体代码如下: 还记得以前我们曾经导入过一个模块random吗 import random 引入一个模块random random.randint(1,99) 生成一个1到99范围之内的随机整数 日期和时间模块 使用import time来导入日期和时间模块,来处理常见的转换日期格式问题 时间间隔是按照秒为单位的浮点小数 每个时间戳是从1970年1月1日0点0分0秒经过了多长时间来表示 比如要表示一个当前时间的时间戳,可以在python里面运行如下代码: 这个时间是用于电脑存储和计算的,但是对于人类来说并不友好,所以,一般会通过函数将这个时间戳转换为人类熟悉的格式 运行如下代码进行体验: 这里是用time.localtime()函数来获得当前的本地时间戳,然后用strftime函数将时间戳转换为显示格式 其中的%Y表示用4位数的年,%m表示月份01-12,%d表示月内的一天0-31,%H表示24小时数0-23,%M表示分钟数00-59,%S表示秒00-59 还有很多其它格式参数,具体内容大家可以自行去网上搜索。 time模块还有很多函数,常用的有time.sleep(seconds),表示暂停程序几秒钟,在python里面输入time.sleep(5)体验一下暂停5秒钟的感觉 time其它时间函数,请大家自行去网上搜索后在python里面进行体验。 进程的概念 计算机系统会启动很多程序,但这些程序不一定在当前界面能看到,比如启动一个python程序,假设这个程序一直在运行不退出,然后我们并没有停留在终端界面,就不一定会看到这个程序在运行,我们把这可以称之为进程。 在树莓派系统里面,可以在LX终端程序里面用sudo ps aux命令来查看所有的当前正在运行的进程: 注意其中PID这一列就是进程ID 如果要搜索包含指定名字的进程,则可以使用sudo ps aux|grep 名字 例如,要搜索有几个包含python的进程,使用sudo ps aux|grep python 如果只看到最后一行 包含了 grep 这一行,表示是搜索程序本身,表示当前进程里面没有包含python的进程 然后我们再打开另外一个LX终端,在里面运行python,进入python环境 然后回到刚才的上面这个LX终端,再次运行sudo ps aux|grep python 会发现搜索结果里面多了一个PID等于1913的进程,运行的是python程序。 如何杀死不用的进程 在某些情况下,进程一直在运行,可能是进入了死循环,这时候,常规办法可能无法删除掉这个进程,可以用下面的办法强制杀掉进程 使用sudo kill -9 PID 这个命令 例如,上面的python进程PID为1913,就运行sudo kill -9 1913杀掉python进程,然后再次查看进程,发现没了该进程: 此时,再切换到另外一个LX终端窗口,发现python程序被杀死强制被退出了: 今天的课程,主要讲的就是如何定义模块,如何使用模块,以及如果碰到死循环程序如何查询杀掉进程。 课后作业 1.写一个死循环程序,循环内部每次sleep 3秒,运行该程序,然后强制退出程序,杀死该进程 2.网上寻找datetime函数包的用法,用2行代码重写输入年月日输出星期几(中文)