发散思维在Python 教学中的应用

2023-08-05 01:52黄山炎培职业学校王兴松
数字技术与应用 2023年5期

黄山炎培职业学校 王兴松

现如今,Python 编程科目已在中职学校普遍开设,而发散思维也在该科目中起到了至关重要的作用。中职学生往往因为基础薄弱和思想禁锢、教师轻视发散思维训练、教师自身能力不足等因素导致学生学习Python编程科目吃力,在处理程序设计问题时往往感到无从下手或求解的方式单调。基于此,中职老师必须重视训练学生的发散思维,教会学生把基本知识点融会贯通,从而学会一题多解,并以此拓展学生的眼界,增加学生对Python 语言学习的兴趣。

软件排行榜中,Python 语言使用率排名总是名列前茅。如何才能让学生成为高端的Python 软件开发人才,其中很重要的一项就是要求教师培养和提高学生分析问题和解决问题的能力,在日常教学过程中注重培养学生的发散思维[1]。Python 程序设计语言是计算机专业核心课程之一,若学生没有良好的发散思维能力和主动思维的习惯,很难在该课程上占有优势地位。

1 Python 语言简介

Python 语言持续火热并被广泛关注,这与它独特的优势密不可分。总体来说,Python 语言具有以下特征:崇尚简单、关键字少、易于学习;能够跨平台运行,编写好的程序可直接移植到Windows、Linux、Mac OS、Android等平台上;支持面向对象编程;具有丰富的函数、标准库、第三方库;应用领域非常广泛,包括游戏开发、人工智能、数据分析、组件集成、网络服务、图像处理和科学计算等领域[2]。以上原因都促使很多教学管理职能部门和软件人才都意识到Python 语言的重要性。现阶段,越来越多的中等职业学校的计算机专业把Python 程序设计语言作为一门重要的专业课,开足课程,投入师资,力求使学生在该编程语言的学习上有所成就。以下内容从中职学校师生的角度阐述发散思维在Python 语言教学中的现状和实践。

2 发散思维训练在Python 教学中的现状

2.1 学生主动发散思维信心不足

中职学生要想学好Python 程序设计语言,受很多因素的制约,包括中职学生的文化课基础、学生的动手能力、学生的知识灵活运用能力、学生的创造思维能力、学生的发散思维能力等。一些中职学生面对Python 程序设计语言课程内容,刚开始抱着很浓厚的学习兴趣,但当接触到一些复杂的算法和逻辑思维很强的程序时,他们对自己信心不足,总觉得自己义务教育阶段成绩不好,现在学习Python 语言肯定也是难以成功。自我否定,畏难情绪伴随,就会导致自己不愿意开动大脑,发散思维则更是无从谈起。具体表现在有的学生觉得自己英语不好,而Python 语言的编写大部分编码都是英文,从而兴趣低落;有的学生觉得自己数学不好,遇到编程问题不会从数学的角度做计算和分析,从而动力不足。这些消极思想都不利于发散思维在Python 语言学习中的萌芽和发展。

2.2 教师轻视发散思维训练

现阶段,部分程序设计的任课教师在课堂上有的只顾照本宣科,有的虽然自己Python 程序设计能力很强但是教学时“有货倒不出”,只顾完成分内的教学任务,而不注重培养学生的发散思维。有的教师受应试教育观的影响,在对学生进程Python 程序设计教学时,要求学生必须按照某种固定的思维实现软件功能。在讲解编程问题时,教师根据题目要求和个人经验编写好程序代码后,既没有详细解释,也没有关注学生的“消化”情况。只是要求学生按照自己一模一样的思路编写代码,然后测试运行,学生运行成功之后有的学生不明其理,以后遇到类似的问题可能还是不会;对于运行失败的学生,教师则直接上手指导,而不是逐行讲解代码,没有引导学生如何思考解决问题。以上种种情况都会导致学生无法靠自己的力量编写出逻辑和功能完善的程序,这也正是程序语言教学的大忌[3]。教师不重视培养学生的发散思维,只顾强行灌输,对学生在编程上的发展只会是事倍功半。

2.3 教师能力不足导致发散思维训练不乐观

教师作为教学活动中的教的主体,其个人能力对中职学生在Python 程序设计方面的发散思维的培养和训练起到了至关重要的作用。中职学校的Python 程序设计教师渠道来源多种多样,能力差异也是明显突出。有的教师是通过校招或者教师招聘考试刚走出大学,Python程序设计理论尚可,实操经验不足,教师自己都尚未形成科学系统的知识架构,做不到知识点的融合贯通,更做不了利用发散思维解决编程问题的榜样示范。有的Python 程序设计教师以前从事软件开发工作,拥有丰富的软件编码实战经验和解决问题的能力,后来通过教师招聘考试或者合同制的形式成为一名中职软件教师,他们的缺陷是由于长期和计算机打交道,没有实际的教育教学经验,不了解中职生的身心发展规律和教育教学技巧,没有成熟的教学策略等,在培养中职生的发散思维能力方面常常显得无从下手、效果甚微。

3 发散思维对教师的要求

发散思维要求教师树立科学的教学观。虽然Python程序设计教学对学生的思维能力有一定的要求,但是教师要相信学生是发展中的人,要相信有学生自我发展的潜力和能力。教师要重视发散思维在程序设计教学中的作用,重视通过算法思想、问题求解方法的分析来调动学生学习程序设计的积极性和主动性[4]。教师要鼓励学生重拾信心,要求学习编程联系生活实际,对灵活解决问题的思维方式给予充分的肯定。教师要培养发散思维的动机,不搞“满堂灌”的注入式教学,而运用启发式和探究式教学法,使学生愿意思考、乐于思考、自主思考。

发散思维要求教师自身技术过硬。Python 程序设计的教师首先要有丰富的教育教学知识。要了解中职学生的身心发展规律和特点,了解中职学生发散思维的现状和特点,了解中职学生课堂管理的一些实用技能和技巧,了解激发学生主动思考、勤于思考的一些策略。其次,Python 程序设计的教师要有精深的学科专业知识。从专业技能上说,教师最低要掌握两门常用的程序设计语言,可以是Java、JavaScript、Python、C 语言等其中的任意两种。教师要有丰富的编码实战经验,经常性的做到一题多解,从而在潜移默化中影响学生的发散思维。要让学生深刻地认识到思维决定代码编写方案,良好的思路才是Python 语言最核心的追求。从学科教学上说,Python 程序设计的教师要了解该课程的课程标准,该课程中的哪些课题和生活实例便于激活学生的发散思维等。教师要鼓励学生挑战自我,敢于试错,敢于科学幻想,要有强烈的好奇心和求知欲。教师要创造经典的问题情境,鼓励学生多学多思;教会学生发散思维策略,示范发散思维应用的技巧;指导学生学会知识的触类旁通和综合应用,提高学生思维的灵活性和敏捷性等。

4 发散思维一题多解的实践

从一道经典的Python 程序设计题出发,主要阐述发散思维在Python 教学中的应用。题目是,输入一个大于1 的正整数n,输出该数的阶乘n!(一个正整数的阶乘是所有小于及等于该数的正整数的积,即n!=1×2×3×...×(n-1)×n)。该题目在中职Python 程序设计教学中很重要也很常见,解题方法不止一种(以下代码实现的环境都是Python3.8 版本)。

4.1 while 循环实现算法

while 循环是Python 程序设计中的循环结构之一,也称为条件循环。所有的循环问题都可以使用while 循环来解决,while 循环的语法格式如下:

while 条件表达式:

循环体

while 循环运行的具体过程是:判断条件表达式的值,如果为逻辑真,则执行循环体中的语句;循环体实施结束后,再判断条件表达式中的值是否为逻辑真,如果是真则继续执行循环体。再这样循环下去,直至条件表达式的值为逻辑假,才终止此循环。

while 循环实现的具体代码如下:

#接收用户输入数字,并把数字转为整数

n=int(input("请输入一个大于1 的正整数:"))

i=1 #控制循环次数

s=1 #接收阶乘的结果

while i<=n:

s*=i #每次累计做乘法

i+=1

print(f'{n}的阶乘是{s}') #输出阶乘的结果

4.2 for 循环实现算法

for 循环是Python 程序设计中的另一种循环结构,也称为有限循环。for 循环的语法格式如下:

for 迭代变量 in 序列类型|字典|集合|文件|range( ):

循环体

for 循环执行的具体流程为:从“字符串|列表|元组|字典|集合|文件|range( )”里面不断取值,每次取到一个值,则执行循环体中的语句,继续取下一个值,再执行循环体中的语句。如此循环下去,直到所有值取用完毕则结束循环。

for 循环实现的具体代码如下:

n=int(input("请输入一个大于1 的正整数:"))

s=1 #接收阶乘的结果

for i in range(1,n+1): #保证可以取到1,2,3...n

s*=i

print(f'{n}的阶乘是{s}') #输出阶乘的结果

4.3 递归函数调用实现算法

递归函数的典型特征是函数直接或间接调用函数本身[5]。每次“自己调用自己”后,复杂度要减小,并且本次调用的结果是为下次调用做前提服务。递归算法的“自己调用自己”是手段,其目的是把较大的问题不断地分解成较小的问题,直到问题可以直接得到答案[6]。

递归算法如下:

n=int(input("请输入一个大于1 的正整数:"))

def jc(n): #自定义函数,名称为jc

if n==1: #递归出口,即函数结束条件

return 1

else:

return n*jc(n-1) #自己调用自己

s=jc(n) #调用函数

print(f'{n}的阶乘是{s}')

代码解释:如果n=5,那么就返回5*jc(4)的值。而想知道这个值,就得先算出jc(4)等于多少。根据函数jc(n),jc(4)=4*jc(3),所以jc(5)=5*4*jc(3)。以此类推,推到jc(5)=5*4*3*2*jc(1)。函数jc(n)里的函数体中规定,当n=1 时,返回值为1。所以:jc(5)=5*4*3*2*1=120

4.4 标准库实现算法

从代码角度讲,库就是一堆类(Class)和函数(Function)的集合。从应用角度讲,库类似生活中的工具箱,箱子里有很多做其他事情必不可少的工具。面对不同的情况,自然需要不同的工具箱,同理,解决不同的编程问题,需要不同的库。

Python 的库可分为标准库和第三方库。标准库是Python 解释器自带的库,也称为模块,如Math(数学处理相关的模块)、Random(随机数处理模块)、Datetime(日期和时间相关的模块)等。第三方库需要通过命令“pip install 库名称”等命令来联网下载,比如游戏模块Pygame,分词模块Jieba 等。

Math 模块求阶乘。Math 模块是与数学处理相关的模块,它里面包括很多实用的函数功能,如求某个数的算术平方根sqrt()、求两个数的最大公约数gcd()、求某个数的阶乘factorial()等。在使用阶乘factorial()解决问题前,需要先导入Math 模块,就像要使用工具需要先拿来整个工具箱的道理一样。具体代码如下:

import math #导入math 模块

n=int(input("请输入一个大于1 的正整数:"))

s = math.factorial(n) #直接使用math 模块里的求阶乘函数

print(f'{n}的阶乘是{s}')

5 结语

以上算法从不同角度解决Python 程序设计问题,说明了Python 功能强大,灵活多变。作为中职学校的Python编程教师,需要充分了解学生发散思维的现状,丰富学生的知识储备,树立科学的教学观,同时注意强化自身的实战能力和思维能力,发挥好发散思维榜样示范的作用。发散思维能够影响Python 程序设计学习的深度和广度,要想学生在这方面有较大地提高,需要多管齐下地鞭策,需要潜移默化地影响,需要坚持不懈地努力。