您当前的位置:首页 > 计算机 > 编程开发 > Python

报告PPT--Python程序设计,不仅仅是学习编程(35页)

时间:01-10来源:作者:董付国点击数:

本文PPT是董付国老师在“全国青少年STEAM创客教育论坛暨粤东青少年创客文化节”的报告内容。

570c9756cac254f51ceecae7266a923b.png
cf2c27c66c305a4692ce2fc7936b52e0.png
4e0e1001d7687245cfc3a1ff9586d167.png
0c9a7d740b6e366682b8c412a7c780b5.png
21ab91b4d85c3e513d30ac7cc130ddb8.png

学习任何程序设计语言,都应结合具体的实际问题,不可空学语法纸上谈兵,更不能把程序设计作为一门孤立的课来讲。作为大学任课教师,可以结合学生专业理论课中的理论、算法或问题来讲Python。

7359de96a78d2ee95adbf52414ac6107.png
aaca41b56583c44683bca91a473d60b7.png

编写程序永远都是最后一步。万不可拿到问题就急急忙忙开始写代码,应该对问题进行深入分析,选择或设计相应的算法并进行足够的优化,最后再写代码实现。

323e2bb5f36de48eb55da68bddd4e941.png
5ee8c08a9395c52c1f67f960a1a21647.png
1e76cfb760d1e735561cbb07b147ac99.png

充分利用问题背后的规律或关系,尽最大可能消除重复计算和不必要的计算,是算法优化的核心思想。

967d1e73609a645bcb3ee1b71b3681d2.png
b967936db1432c957b52e6d94ab12f78.png
f0e0d2ac3610e2b61b5dbf83848b53bf.png
2f2d5eae2867a95bcb48a7d7983bd429.png

有了足够优化的算法之后,还应考虑代码层面的优化,充分发挥和挖掘所用程序设计语言自身的优势和提供的机制,进一步提高效率,降低时间复杂度和空间复杂度。在优化Python程序时,消除循环是提高运行速度的重要方式之一。

26eb5a323a4bd70fe13d9833c433c8c7.png
fe2fb70aa0c34dfbe57479ab7239254b.png

内置函数map()、filter()和标准库函数reduce()在底层封装了循环结构,可以大幅度提高效率,函数式编程模式是优先推荐使用。另外,下面的第二段代码使用内置类型int巧妙实现了安全展开式的计算,比列表推导式的等价代码快上百倍。但演示代码中涉及的问题并不是通用的,主要是提供一个思路,遇到具体问题还需要具体分析和优化。

b1c98adc86829e60e13fbdef89b5486b.png

如何利用有限的学时来覆盖、讲授和演示尽可能多的知识点,是老师对相关知识掌握程度和教学设计、课堂掌控能力的综合考验。案例不一定要多,但是一定要“精”,尽量设计或选择能够包含多个语法知识的教学案例。例如,下面的代码中演示了Python关键字else的4种用法。

001383bd45e3a7aa69ade44a1e8b70ba.png

在开发大型或商用项目时,不应只考虑正常情况下程序的逻辑,还需要花费大量时间和精力来考虑异常情况下的逻辑,保证程序在非正常条件下仍有相对正常的表现。凡需要用户提供输入的场景,都必须要对用户输入进行严格的检查和过滤。下面的代码中,重点关注字符串方法lower()和关键字in的使用,这也是代码优化的一个体现。

50b0318fd3391c48e4a12afa83c9e263.png

在下面的代码中,左上角代码是对组合数定义进行展开并约分后得到的表达式进行计算。右下角代码是对计算组合数的帕斯卡公式的实现,利用Python标准库提供的缓冲机制大幅度消除重复计算来提高上万倍的速度,右上角是对应的二叉树原理。左下角代码演示的Python 3.8之后的标准库math中已经提供了组合数计算函数,可以直接使用。

33427ba07455632da3a7e0e5fd9607e8.png

下面第一段代码中最后的break删除之后运行结果仍是正确的,但是加上这句break的话代码质量立刻有了大幅度提升,说明写代码的人对问题进行了分析,而不是简单地从数学到代码的简单翻译。因为从数学上来讲,鸡兔同笼问题实际上是个二元一次方程组的求解问题,众所周知二元一次方程如果有解的话必然是唯一解。所以在循环中找到一组解之后不需要继续循环,不可能有其他解了。第二段代码是把二元一次方程组的数学求解过程直接翻译成程序了。

b1d5ca1e619c9809a511958865bd39e3.png

技术是个双刃剑,我们在运用技术时,必须严格遵守相关法律法规、计算机伦理学和职业道德,不可凭借技术优势肆意妄为,网络不是法外之地。

2b116b689c8b6fc79a63f81a241fb0b5.png
945a8aaa956e4e4603e58ee730ff8972.png
83ec56f5eab715a4647ea4bf7025ebe4.png
da5f1dd7832f4d6abb098daabf6a7c2f.png
5f79756907c9e85545a95a39efa9ea8d.png
67259ff76cce1ac27802b2ae15621874.png
36e047c82ab88022ff3e357e18936b4c.png
d5cb392a9325fdc9b70979112be927f2.png
b6a9e7e057d14bd6bb016cc486a21a3d.png
c85f1298082865b278de471959f4c4bc.png

下面案例涉及的问题在网络上叫“中国式过马路”,但实际上同样的问题在任何国家任何城市都是存在的,叫“中国式过马路”是对我们的不尊重,所以我在教学中选用这个案例时改成了“集体过马路”,每一个人都应该像爱护自己的家一样去爱护我们的祖国。我们在案例选择时需要消除其中的歧视性因素,必要的时候进行适当修改。

2bb2c8df73ce44f466650b6c14fefc82.png
69339f3839ffa2409efd84bcca569bee.png
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门