Python第四课教学设计及反思
(2017-05-21 18:52:42)
标签:
哈三中信息技术课python |
这节课开始想详细的介绍一下判断语句、while循环语句,并复习输入输出语句。同时,使学生了解编程解决问题的过程:分析问题、设计算法、编写程序、调试运行、完善程序(原版的教材没有这步,我加的,后文详述原因),进一步体验调试程序,初步体验自己根据需求编写程序。
由于上节课作业各班完成情况不同,大多班级从上节的作业情况导入,然后介绍编程的过程,并结合作业介绍判断结构和while语句的基本语法,之后依然围绕上节的作业进行了这样几个练习。
1、测试三组数据,发现问题,并尝试改正。
1.8m 80kg, 2m 99kg,1.67m 46kg
2、给程序增加如下功能:
1)如果输入性别不是男也不是女给出错误提示,并重新输入
2)如果输入身高大于2.5米给出错误提示,并重新输入
3)如果输入高体重大于200公斤给出错误提示,并重新输入
4)如果身高、体重输入的不是数字,给出错误提示,并重新输入
练习1的3组测试数据时在上节课学生提出的问题,第二组数据涉及到“\”运算符和类型转换函数float(),第三组数据设计保留小数位数时的边界问题,格式化输出时的进位问题。这个练习学生大多能发现测试数据得到的结果有问题,但是分析问题原因绝大部分学生分析不出,个别能分析出原因的却不知道如何解决。仅有极少数有过编程经验的能够或参见竞赛培训的学生能够解决。我做了讲解演示,第三组测试数据的解释理解起来有困难。总的来说这个任务难了。定位到学生能够发现问题,并尝试分析原因就好,重点要让学生了解程序测试的方法和重要性。此外,如果现将所涉及的知识点讲解,在让学生寻找错误原因难度会降低很多。
练习2的内容都属于对程序的完善,如果没有这些功能程序在输入复合要求的情况下也能正常使用,能够实现基本的功能,但是有了这些功能程序的容错性或更好,更从用户角度考虑问题,更人性化,这也是在进行软件开发中所必须的,我把这个过程称为程序的完善。
练习2的1-3先让学生用if语句完成,目的是进一步熟悉if语句的语法规则,同时也希望学生发现if语句只能实现一次判断和重新输入,为引出while语句做伏笔。课堂上学生在使用if语句时经常忘记输入冒号":",或者将冒号与条件表达式颠倒,这说明对if的基本语法还记得不扎实。在应用逻辑关系or和and时错误较多。这些问题应该是我没有循序渐进按部就班的讲解,没有做基础练习。下节课时需要在课前回顾,并做专项练习。
练习2的4被我想简单了,从程序设计角度来看这一功能是应该有的,所以我列了出来,但是我并没有将相应的知识介绍给学生,开始的几个班级能做到这的学生特别少,个别问到我,我就告诉其用type()函数的功能,并让其尝试处理,学生也没有继续问我。但是到了1班,能做到这的学生多了很多,而我告诉他们的这个方法居然是错误的。下面是我的解决思路:
……
weight=input("请输入你的体重(kg)")
while type(weight)=='':
……
但是程序在运行过程中报错,我一直认为是''这部分的表达有问题,因为‘’需要转义,但是几经尝试都不可以。尴尬啊!课上我承认自己暂时不能解决这个问题,需要课下研究。再次体会到交给学生一瓢水需要有一桶水甚至一条河流。
课下便开始寻找解决方法。一番百度,结果发现了使用types模块types.StringType和types.IntType才能获得正确的类型,但是程序还不对。再次分析问题时发现,因为在python2.x中我使用了input()输入命令,其就是负责输入数字类型的命令,当在输入非数字内容时,编译会出错,程序根本不会运行到while语句。解决这个问题实际是要检测编译错误,当发生错误时记录,并给相应提示。于是查到了try
except语句。可惜上班时没时间细看,没看懂。昨天在中国大学mooc平台学习第二周内容时,居然有相关内容,称之为异常处理。皇天不负有心人啊!这回学会了,问题解决了!
while 1:
此外,1班还出现了一个让我尴尬的问题,学生chyz用while else语句解决了练习2的前三个问题,而我所用的书籍中根未提到有这样的语法规则,我当时告诉他这是语法错误,但是为什么对,可能是因为缩进引起的。又是在这个mooc中我找到了答案,确实有这种表达方式,上面的代码也用到了,没有if却有else。python太神奇啦!买的书太初级了!该学的太多了!
还好现在遇到的问题都解决了,下节课我终于有脸见1班学生了,可下节课又会遇到什么新问题呢!