Python教案-教学设计_第1页
Python教案-教学设计_第2页
Python教案-教学设计_第3页
Python教案-教学设计_第4页
Python教案-教学设计_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

时间:课题程序设计基础--绪论教学目标1.了解程序设计语言的发展历史2.理解Python语言的特点及其重要性3.掌握Python语言Hello程序的编写方法4.掌握Python语言开发的运行环境的配置教学重点Python语言的特点及其重要性Python语言开发的运行环境的配置教学难点Python语言开发的运行环境的配置主要教法讲授演示法+上机操作教学过程一、新课导入计算机的定义:能够根据指令操作数据的设备计算机的两个特性功能性可编程性计算机的可编程性需要通过程序设计来体现程序设计语言:计算机能够理解和识别操作的一种交互体系程序设计语言的种类机器语言汇编语言高级语言常用的程序设计语言高级语言的执行方法静态语言:编译执行脚本语言:解释执行编译和解释的区别编译:一次性的翻译,需对目标代码优化解释:每次运行都需要编译:源代码(高级语言)转换成目标代码(机器语言)解释:源代码逐条转化成目标代码同时逐条运行目标代码的过程编译的好处目标代码执行速度更快目标代码在相同操作系统上使用灵活解释的好处便于维护源代码良好的可移植性Python语言:将解释器和编译器结合的脚本语言计算机已成为普通工具学会编程:满足感和安全感C/C++等语言:复杂Python语言:充满快乐和创造性的全新旅程Python语言概述Python语言的历史诞生于1989年,已有25年,达到成熟期2000年,Python2.0,2,.7.62008年,Python3.0,3.4.xPython语言的特点强制缩进保证可读性不需要主函数可以同时被解释和编译执行语言简洁编程模式灵活(面向过程和面向对象)Python语言的开发环境配置安装Python运行环境根据操作系统选择不同版本下载相应的Python2.7.6版本程序,跟随提示安装使用Python运行环境方法一:启动Windows命令行工具,输入python,在>>>后输入Python语句,如图所示输入exit()或quit()退出方法二:调用已安装的IDLE来启动Python运行环境,方法三:按照语法格式编写代码,保存为文件,例如源文件hello.py。打开Windows命令行,使用命令pythonhello.py来运行文件使用Python运行环境方法四:打开IDLE,Ctrl+N打开一个新窗口,输入语句并保存,使用快键建F5即可运行该程序方法五:将Python集成到Eclipse等面向较大规模项目开发的集成开发环境中其他操作系统上配置Python环境与上述在Windows上的配置方法类似Hello程序你的第一个程序:在屏幕上打印出“HelloWorld”print“HelloWorld”表示将引号中的信息输出到屏幕上显示效果如下:二、上机练习首先进行Python的安装与开发环境配置,接着完成第一个程序“HelloWorld”三、本课小结计算机的基本概念程序设计语言分类编译和解释Python语言概述Python的Hello程序编写及开发环境配置课后反思

时间:课题Python程序语言入门教学目标让学生了解什么是编程及对编程提起浓厚的学习兴趣;·PythonShell、GUI和Prompt(提示符)的理解;·学会与Python交互的方法,print指令;·新建程序文本文档、运行程序的方法、保存时需要注意什么;·学会怎样去查询程序的错误;教学重点·让学生对编程提起浓厚的兴趣;·print指令的运用;·识别和修正程序的错误。教学难点·识别和修正程序的错误;主要教法讲授演示法+上机操作教学过程复习巩固1、什么是编程?2、Python-我们和计算机沟通的语言所想要表达编程软件翻计算机接收的意思译成二进制并执行常用、最流行的几种程序语言:C、C++、C#、Java、VB、pythonPython可以用来做什么·开发游戏&软件(游戏后台大多数用python编写);·制作更高级的Flash(webflashgame);·创建数据库;·黑客hacker(远程攻击计算机、破解硬件or软件);·发明变形金刚(2006年日本FANUC推出的人工智能机器人);·学习其他语言的基础(所有程序语言都有共同性,学好python能够让你快人一步的理解其他程序语言);·python几乎无所不能。========当然不是每一个学习python的人都能成功================但是学习python你将获利以下几点========√让你的思维更加敏捷!√让你变的知识渊博!√让你学习更多的英文!============也有可能带来一些“负面影响”===========×你的皮肤会变得粗糙>_<×你可能会变成一枚宅男╯□╰×花500元买一副眼镜⊙﹏⊙上机操作从IDLE启动python1、通过开始菜单;好比三种第一种:2B青年三种方法2、通过快捷方式;第二种:普通青年3、通过快捷键;网络青年第三种:文艺青年·窗口标题栏的文字“PythonShell”-中文意思是“python的外壳”,是作为用户输入文本与程序交互途径的一种。·整个窗口被叫做“GUI”-中文意思是“图形用户界面”,GUI的特性是包含:窗口、菜单、按钮、滚动条等。没有这些特性的程序叫做text-mode(文本模式程序)、commandline(命令行程序)*提问:平时在使用电脑时有没有遇见过带有GUI的程序和text-mode、commandline?(答案:windows窗口DOS)·>>>-叫做提示符(Prompt),指程序正在等待你键入信息时显示的符号。来点指令吧!>>>print“Heyman!”回车(每输入完一行指令都要输入回车以跳转到下一行)Print-打印(命令),指在屏幕上显示文本,而不是常说的用打印机打印在纸上。!!注意>>颜色<<注意!!问:IDEL里为什么会有这些奇妙的颜色呢?答:IDLE为了帮助我们更好的理解和阅读这些内容,会用不同的颜色来区分代码(code)不同的部分,print的颜色就是橙色。!!注意>>错误<<注意!!问:SyntaxError:invalidsyntax是个什么东西?答:直译“语法错误:无效的语法”,表示python不懂你输入的内容,因为print被错误的拼成了point。与python交互我们刚刚执行的第一条指令:heyman,就是在和python交互,这种输入代码与计算机交流的过程就叫做交互。多试一条指令!>>>print5+38>>>计算机非常擅长算术运算,计算机被创造出来的初期就是被用来数据计算。再试一条指令!>>>print5*315>>>======Mr.LeeTIPS======几乎所有计算机程序和语言中都使用*符号作为乘号。这个符号称作“星号”或“星”。======口算&计算器&python三者进行对比吧======口算:Print5*3======口算&计算器&python三者进行对比吧======利用python你除了可以超大数的数学计算之外,你还可以做些令人意想不到的事情,例如:>>>print“Dog”+“brother”Dogbrother>>或者>>>print“whereisplane”*20whereisplanewhereisplanewhereisplanewhereisplanewhereisplanewhereisplanewhereisplanewhereisplanewhereisplanewhereisplanewhereisplanewhereisplanewhereisplanewhereisplanewhereisplanewhereisplanewhereisplanewhereisplanewhereisplanewhereisplane>>>计算机除了非常擅长运算外,另一件事情就是反复的做事情,重要的是它不会感到枯燥,就像上面我让计算机喊了20句whereisplane,如果你高兴可以让它喊到直到MH370出现,前提是马航要给力还有就是不要停电……编程任务到目前为止,我们只是看到单个python指令的演示,其实程序就是多个指令的集合。创建程序的方法:a.通过PythonShell菜单栏→File→NewWindows创建;b.快捷键:Ctrl+N。*新程序窗口标题栏显示“Untitled”(未命名)。如何给程序取名字?2、程序1我们的第一个程序-“我爱吃香蕉”print“我爱吃香蕉!”print“香蕉”*20print“mua”*40print“我吃撑了!”保存/另存(命名)你的程序文档File→Save/SaveAs输入完指令后通过Save快:Ctrl+N保存or另存为SaveAs快:Ctrl+Shift+S!!注意>>扩展名<<注意!!输入完程序名称后一定不要忘了加上.py,否则在python中将看不到程序中命令的颜色和windows不知道该用什么程序来打开这个文件。======Mr.LeeTIPS======如果你想要你的程序支持中文,需要在程序的第一行加上代码:#encodingXXX#XXX用各国文字编码代码来替换,各国文字编码代码可以查询百度。例如,简体中文的代码是:GBK,那么程序的第一行应写上:#encodingGBK#======Mr.LeeTIPS======如果出了问题在编程过程中容易出现的问题归纳为两大类:syntaxerror(语法错误):指编程语言的拼写和文法规则出现错误,意味着你键入的某个内容不是正确的Python代码。例如:>>>printwhereisplane”syntaxerror:invalidsyntax(语法错误:无效的语法)there'sanerrorisyourprogram(这是一个错误的程序)>>>错误原因:where前面漏了一个引号2、runtimeerror(运行时错误):只会在程序运行时才会发生的错误,是IDLE或python无法检测出来的错误。例如:程序2运行时错误-“我爱大鳄鱼”>>>print“你好!欢迎来到我的动物园!”print“我的动物园有好多好多的动物,例如:”print“鳄鱼”+5>>>错误原因:IDLE1.2.1========NoSubprocess=========>>>你好!欢迎来到我的动物园!我的动物园有好多好多的动物,例如:Traceback(mostrecentcalllast):(错误的开始)File“C:\Users\Administrator\Destop\ilovebigcayman.py”,line4,in<module>(错误发生的位置/程序文件保存的路径)Print“鳄鱼”+5(出错的代码行)TypeError:cannotconcatenate‘str’and‘int’objects(python认为可能存在的问题,并不一定是在这里,但是会在这附近)=====================思考=====================为嘛print“鳄鱼”*5可以,print“鳄鱼”+5却不行?=====================解惑=====================听我说,这有点像将苹果和鳄鱼放在一起,在python中不能将两个完全不同的东西放在一起,比如说数字(int)和文本(str)。“鳄鱼”+5像是在说5个苹果和3只鳄鱼相加等于多少?结果是8,但是8个什么?完全没有意义。不过几乎所有东西都可以乘以一个数来翻倍,如果你有1只鳄鱼,再乘以5,那么你就会有5只鳄鱼!(克隆大乱斗!)。第二个程序任务第一个程序“我爱吃香蕉!”没多大实际意义,仅仅只是在屏幕上打印了一些内容,下面我们来是一个更加有意思的程序,记得给它取上一个名字,“NumGuess”是个不错的名字。File→NewWindows→Save→“NumGuess.py”输入以下代码:======================================================#encoding=GBK#importrandomsecret=random.randint(1,100)guess=0tries=0print"你好,同学……我和你们班主任之间有一个秘密!?"print"这个秘密就在1-99之间的一个数字。我会给你6次机会来猜这个数字,猜对你就可以获赠加多宝一罐!"whileguess!=secretandtries<6:guess=input("来猜个数字吧!?")ifguess<secret:print"太低了喔!~"elifguess>secret:print"太高了喔!~"tries=tries+1ifguess==secret:print"哦也!你猜中这个数字了!!那么加多宝的话,请出门左拐找你们蒋老师!"else:print"我不会给你更多机会了,同学!你现在得请我喝一瓶王老吉!"print"这个秘密数字就是————",secret======================================================程序解析:while、if、else、elif和input指令我们在以后会详细的学到。程序概念点:由程序随机选取秘密数。用户输入他猜的数。程序根据秘密数检查用户猜的结果:太大还是太小?用户不断尝试,直到猜出这个数,或者用完所有机会。猜到的数与秘密数一致时,玩家获胜。>>>教学过程结束。课堂小结:学会了如何启动IDLE;了解了交互模式;交给Python一些指令来执行;看到了Python知道如何完成算术运算(包括非常大的数);启动IDLE文本编辑器键入你的第一个程序:我爱吃香蕉;运行你的第一个Python程序;了解如何查看错误消息;运行你的第二个Python程序:猜数游戏。课堂练习之用脑想一想:如何启动IDLE?print的作用是什么?Python中表示乘法和除法的符号是什么?GUI的特性包括哪些?如果想要你的程序支持中文,需要做什么?课堂练习之动手做一做:1.在交互模式中,使用Python计算一周有多少分钟。2.编写一个简短的小程序,打印3行:你的名字、出生日期,还有你最喜欢的颜色。(结果应该是下面这样)我的名字叫XX,我是XX运动队的。我1988年08月20日出生。我最喜欢的颜色是粉红色。课后反思时间:课题判断循环教学目标掌握if语句:单分支、双分支、多分支、嵌套完成条件语句实例:登录认证模块学会判断输入是否合法了解三元表达式掌握range()掌握循环语句掌握for语句掌握while掌握break、continue、pass完成循环语句实例:登录认证模块扩展教学重点掌握if语句:单分支、双分支、多分支、嵌套了解三元表达式掌握range()掌握循环语句掌握for语句掌握while掌握break、continue、pass教学难点完成条件语句实例:登录认证模块完成循环语句实例:登录认证模块扩展主要教法讲授演示法+上机操作教学过程一、新课讲授掌握if语句单分支if表达式: 代码块1else: 代码块双分支if表达式1: 代码块1elif表达式2: 代码块2多分支if表达式1: 代码块1elif表达式2: 代码块2…else: 代码块_其他嵌套了解三元表达式Expression1ifboolean_expressionelseExpression2 如果满足条件A大于B,则max值为A,反之max为B如:max=AifA>BelseB例如:掌握range()range():产生整数序列例:range(n):产生从0开始,到n的数字序列,不包括n。range(m,n):产生从m开始,到n的数字序列,不包括n。range(m,n,k):产生从m开始,到n,增量为k的数字序列,不包括n。掌握循环语句掌握for语句语法格式:forexpression1initerable: for_suiteelse: else_suite例如:结果:掌握while掌握break、continue、pass语法结构:whileboolean_expression: while_suiteelse: else_suite解释:如果boolean_expression的结果为True,循环就会执行;boolean_expression的结果为False时终止循环,此时如果有else分支,则会执行。以上结构中,else分支为可选部分。else代码块:循环不满足循环条件终止,才会执行,如果循环终止是由break跳出,则else分支不会执行。例如:break:跳出所处的最近层循环continue:跳到所处的最近层循环的开始处pass:占位语句例如:执行结果:二、上机练习条件语句实例:登录认证模块判断输入是否合法非法用户提示警告信息合法用户提示登录成功username=raw_input("username:")

ifusername=='':

print"用户名不能为空"

else:

print"\033[1;33;45m登录成功,欢迎%s\033[0m"%usernamechr()ord()循环语句实例:登录认证模块扩展直接回车无效,继续输入验证用户身份是否合法三、课堂小结if语句:单分支、双分支、多分支、嵌套、三元表达式、range()、循环语句、for语句、while、break、continue、pass登录认证模块展示课后反思时间:课题python序列-字符串教学目标了解序列类型常用操作了解索引和切片掌握类型转化掌握强制类型转化学会字符串转换实例:格式化输出菜单列表,将用户的输入数值转化整型并验证掌握字符串常用方法s.find()s.join()s.replace()s.split()s.strip()s.index()s.startswith/s.endswith(t)s.isalnum()/s.isalpha()/s.isdigit()/isupper()/islower()s.upper()/ s.lower()/s.swapcases.count()教学重点了解序列类型常用操作了解索引和切片掌握类型转化掌握强制类型转化教学难点学会字符串转换实例主要教法讲授演示法+上机操作教学过程一、新课讲授序列类型常用操作索引和切片索引:例:s[0]从左向右:索引从0开始;从右向左:索引从-1开始切片:例:s[0:2]扩展切片:指定步长,例:s[0:9:2]掌握类型转化格式:print“字符串%format1%format2…”%(变量或值1,变量或值2...)符号及其对应输出格式:%d或%i 十进制整数或长整数%f 浮点数%s 字符串%% 用于输出符号%举例:强制类型转化int():强制转换为整型,例如:注意:只能将由数字组成的字符串转换为整型错误用法float():强制转换为浮点型例如str():强制转换为字符串例如:掌握字符串常用方法 s.find(t):查找子串t,找到返回最小的索引值,找不到则返回-1s.join(iter)使用s作为连接符连接序列iter中所有元素如:list2=["h","e","l","l","o",".","c","o","m"] “”.join(list2)s.replace(old,new):替换s.split(sep):使用sep作为分割符,列表返回结果。如:str=””str.split(".")得到["www","baidu","com"]序列s.strip(t):删掉开头和结尾的字符t如:删除空白符s1.strip()s.index(t):子串t首次出现的位置,找不到报错s.startswith/s.endswith(t)以子串t开头/结尾:结果是true或falses.isalnum()/s.isalpha()/s.isdigit()/isupper()/islower():判断所有字符是否为数字或字母/是否为字母/是否为数字结果是bools.upper()/ s.lower()/s.swapcase:所有字母转化为大写字母/小写字母,大小写互换s.count(t)统计t出现的次数二、上机练习字符串转换实例:格式化输出菜单列表;将用户的输入数值转化整型并验证三、本课小结序列类型常用操作、索引和切片、类型转化、强制类型转化、字符串常用方法学生展示:字符串转换实例课后反思时间:课题python列表和元祖教学目标掌握列表基础知识掌握列表相关方法掌握序列类型操作掌握生成器掌握元组类型掌握元组相关方法教学重点掌握列表相关方法掌握序列类型操作掌握生成器掌握元组类型教学难点掌握列表相关方法掌握元组相关方法主要教法讲授演示法+上机操作教学过程一、新课讲授掌握列表基础知识列表的特点:支持异构:一个列表中含不同类型的对象支持嵌套:即列表中的元素可以是列表可变:支持通过索引,切片,进行修改如何定义列表:方法一:[];例:list1=[1,3,5]方法二:使用内置函数list():内建函数list(a_sequence)可以将一个序列转为列表例1:>>>str1="dddgf">>>list1=list(str1)>>>list1['d','d','d','g','f']例2:(后面讲)>>>tuple1=(1,2,1)>>>list1=list(tuple1)>>>list1[1,2,1]例3:掌握列表相关方法: append():向列表中追加元素例如:extend():追加可迭代对象中所有元素 例1:list2=[1,2,3] list3=[]list3.extend(list2)例2insert():在指定索引位置插入列表也支持索引,例如:插入例子:pop():按照索引弹出元素,返回值为该元素。默认弹出最后一个元素。例如:remove():按照元素值弹出第一个匹配项例如:count():统计指定值出现的次数index():某个值第一次出现的位置例如:reverse():反向存放例如:查询遍历:forIinlistfori,kenument(list)sort():排序掌握序列类型操作:序列类型包括:字符串、列表、元组+连接*重复例如:max():求最大值、min():求最小值例如:掌握列表生成式列表生成式,是Python内置的一种极其强大的生成list的表达式。用于:基于已有列表生成新列表语法结构:列表生成式的书写格式:[x*xforxinrange(1,11)]第一:把要生成的元素x*x放到前面第二:后面跟上for循环这样就可以把list创建出来。for循环后面还可以加上if判断举例:1到10之间的偶数平方再除以2作为新列表元素1到10之间的偶数,作为新列表元素特点:一次性生成新列表,如果列表数据过大,会消耗大量资源。掌握元组类型定义元组:方法一:()例:tuple1=(1,3,4)方法二:使用内置函数tuple():将可迭代对象中所有元素作为元组元素例:>>>list1=[1,2,3]>>>t1=tuple(list1)>>>t1(1,2,3)元组的特点支持异构;支持嵌套;不可变:不支持通过索引、切片,进行修改元组的遍历例如:掌握元组相关方法 index():返回指定元素第一次出现的索引位置 count():指定元素出现的次数例如:二、上机练习练习:三、本课小结列表基础知识、列表相关方法、序列类型操作、生成器、元组类型、元组相关方法学生完成实例操作课后反思时间:课题运维平台计算机管理实例教学目标登录模块实现添加计算机删除计算机查询可管理计算机教学重点登录模块实现教学难点查询可管理计算机主要教法讲授演示法+上机操作教学过程一、学习任务运维平台计算机管理实例任务要求与注意事项二、上机练习学生上机实操:提示:三、任务展示与评价学生进行展示,完成互评与老师点评项目分值评价标准得分自评组评师评程序设计20编程技巧30调试过程运行结果30搭建合理稳固小组配合20小组成员分工及配合方面总体得分课后反思时间:课题python字典和集合教学目标掌握字典类型掌握字典相关方法掌握字典的遍历掌握集合类型掌握集合相关方法教学重点掌握字典相关方法掌握字典的遍历掌握集合类型教学难点掌握字典的遍历掌握集合相关方法主要教法讲授演示法+上机操作教学过程一、新课讲授掌握字典类型字典的特点无序:通过键实现元素存取,故无序可变:可以通过键进行改变异构:支持多种数据类型嵌套:可以在键值对中的值部分出现字典定义字典:方法一:{key1:value1,key2:value2,...}方法二:dict()内置函数:指定键值例:d2=dict(name="jerry",age="45",gender="m")关键点:键与值用冒号“:”分开;项与项用逗号“,”分开;字典中的键必须是唯一的,而值可以不唯一掌握字典相关方法更新或添加元素:dict1[key]=value例如:items():变量解包:即将字典转化为键、值作为元组的列表例如:keys();键列表例如:values():值列表例如:has_key():判断是否存在某个键,返回结果true或false例如:del删除元素:调用python自身函数删除例如:len():取得字典中键值对个数例如: update():在原字典上合并字典,键相同时会被覆盖。 例如: get():取得某个键对应的值例如: pop():弹出指定键对应的值 popitem():随机弹出键值对 clear():清除所有元素例如:掌握字典的遍历:掌握集合类型什么是集合无序、互异,集合的功能及特点 支持成员关系判断 支持迭代 不支持索引,切片元素唯一定义集合set方法一:{元素} 方法二:内置函数set()例:集合相关方法:len():元素个数例如: add():添加元素例如: remove():删除元素例如: update():合并集合例如: pop():随机弹出某个元素例如:集合关系操作 s|t:s和t的并集例如: s&t:s和t的交集例如: s-t:求差集,存在于s集合而不存在于t集合中的例如: s^t:求对称差集例如:二、上机练习学生上机完成字典类型、字典相关方法、字典的遍历、集合类型、集合相关方法的案例练习。三、本课小结字典类型、字典相关方法、字典的遍历、集合类型、集合相关方法课后反思时间:课题python文件处理教学目标掌握如何创建文件对象掌握open()三种基本模式掌握open()的附加模式掌握文件对象的相关方法掌握文件对象的相关属性教学重点掌握如何创建文件对象掌握open()三种基本模式掌握open()的附加模式教学难点掌握文件对象的相关方法掌握文件对象的相关属性主要教法讲授演示法+上机操作教学过程一、新课讲授掌握如何创建文件对象内置函数open()同file():用于打开文件和创建文件对象,返回文件对象with打开文件:withopen('password')asf:#f=file('password')语法格式:open(文件名,模式)例如:掌握open()三种基本模式r:只读,如果文件不存在,会发生异常例:w:写入(覆盖原有内容),如果文件不存在,会创建文件例1:password文件内容不为空,以w模式打开:结果:创建passwd文件a:附加(从文件尾部追加),如果文件不存在,会创建文件例如:掌握open()的附加模式+:表示同时支持读写aaa+可读写模式,写只能写在文件末尾处w+可读写,与a+的区别是要清空文件内容r+可读写,与a+的区别是可以写到文件任何位置掌握文件对象的相关方法readline():返回一行readlines():列表类型返回所有行内容read():指定从文件读取多少字节,不指定字节数则读取全部内容,以字符串形式显示。tell():当前指针在文件中的位置(多少个字节的位置) seek():定义文件指针的偏移量 f.seek(偏移量,选项)write():将字符串写入文件writelines():将字符序列写入flush():刷新,将数据从缓存区写入文件sldkjalsjaslkjdclose():关闭文件例如:例2:掌握文件对象的相关属性mode:文件打开模式name:返回文件名closed:显示文件是否已关闭掉例如:二、上机练习学生上机完成创建文件对象、open()三种基本模式、open()的附加模式、文件对象的相关上机练习,熟练完成Python创建文件对象的方法。三、本课小结如何创建文件对象、open()三种基本模式、open()的附加模式、掌握文件对象的相关方法掌握文件对象的相关属性课后反思时间:课题函数式编程一教学目标掌握什么是函数掌握函数的定义掌握函数的调用掌握函数形参和实参的区别了解函数的作用域:什么是作用域、作用域分类掌握函数的参数:默认参数、关键字参数、可变参数教学重点掌握函数的调用掌握函数形参和实参的区别教学难点了解函数的作用域:什么是作用域、作用域分类掌握函数的参数:默认参数、关键字参数、可变参数主要教法讲授演示法+上机操作教学过程一、新课讲授掌握什么是函数function功能def函数是python为了代码重用和最小化代码冗余而提供的基本程序结构。函数将相关功能打包并参数化,将复杂的系统分解成可管理的部件。掌握函数的定义在这里说明几点:在Python中采用def关键字进行函数的定义,不用指定返回值的类型。函数参数params可以是零个、一个或者多个,同样的,函数参数也不用指定参数类型,因为在Python中变量都是弱类型的,Python会自动根据值来维护其类型。return语句是可选的,它可以在函数体内任何地方出现,表示函数调用执行到此结束;如果没有return语句,会自动返回NONE,如果有return语句,但是return后面没有接表达式或者值的话也是返回NONE。下面看例子:例1:例2:例3:掌握函数的调用函数调用的方法:函数名(实际参数)在Python中不允许前向引用,即在函数定义之前,不允许调用该函数例如下面的错误:掌握函数形参和实参的区别形参全称是形式参数,在用def关键字定义函数时函数名后面括号里的变量称作为形式参数。实参全称为实际参数,在调用函数时提供的值或者变量称作为实际参数例如:了解函数的作用域什么是作用域变量的作用域:即变量能够使用的范围作用域分类本地作用域:定义在函数体内的变量(局部变量)在Python中,会为每个层次生成一个符号表,里层能调用外层中的变量,而外层不能调用里层中的变量,并且当外层和里层有同名变量时,外层变量会被里层变量屏蔽掉,例如:在函数function中,while循环外面和while循环里面都有变量x,此时,while循环外面的变量x会被屏蔽掉。注意在函数内部定义的变量作用域都仅限于函数内部,在函数外部是不能够调用的,一般称这种变量为局部变量。 全局作用域:定义在主程序的变量(全局变量)它是在函数外部定义的,作用域是整个文件。全局变量可以直接在函数里面应用,但是如果要在函数内部改变全局变量,必须使用global关键字进行声明掌握函数的参数默认参数:定义函数时,“name=value”的形式设置参数默认值在Python中默认的是采用位置参数来传参。这样调用函数必须严格按照函数定义时的参数个数和位置来传参,从左至右进行匹配,否则将会出现预想不到的结果调用函数时默认参数放后边关键字参数:调用函数时,使用“name=value”的形式通过参数名指定通过指定参数名字传递参数的时候,参数位置对结果是没有影响的。关键字参数最厉害的地方在于它能够给函数参数提供默认值,参数指定了默认值后,如果传参时不指定参数名,则会从左到右依次进行传参,关键参数要放在普通参数后面。例如:可变参数例1:*args,我们要定义一个函数的时候,必须要预先定义这个函数需要多少个参数(或者说可以接受多少个参数)。一般情况下这是没问题的,但是也有在定义函数的时候,不能知道参数个数的情况在Python里,带*的参数就是用来接受可变数量参数的,这里接收的是元组数据例2:**kwargs,字典作为参数:定义函数时使用**开头的参数,调用时使用“name=value”的形式,作为传递进来字典的键值对二、上机练习学生上机完成函数式编程任务,教师巡视指导。三、本课小结什么是函数函数的定义函数的调用函数形参和实参的区别函数的作用域:什么是作用域、作用域分类函数的参数:默认参数、关键字参数、可变参数课后反思时间:课题函数式编程二教学目标递归函数掌握lambda表达式enumerate函数序列化yield函数(迭代)装饰器教学重点递归函数教学难点掌握lambda表达式enumerate函数序列化yield函数(迭代)主要教法讲授演示法+上机操作教学过程一、新课讲授递归函数:在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数;例1例2掌握lambda表达式lambda函数也叫匿名函数,即,函数没有具体的名称,而用def创建的方法是有名称的语法:lambda参数:表达式lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值。lambda语句构建的其实是一个函数对象举例:f1=lambdax,y:x+y f1(2,3)和map函数共同使用:Map()第一个参数接收一个函数名,第二个参数接收一个可迭代对象例如:Lambda和map共同使用enumerate函数用于遍历序列中的元素以及它们的下标yield函数:yield的作用就是把一个函数变成一个generator,带有yield的函数不再是一个普通函数,Python解释器会将其视为一个generator例如:装饰器装饰器就是为已经存在的对象添加额外的功能。比如1:例如2:其中@语法糖:相当于run=login(run)二、上机练习学生上机完成本节函数式编程任务,教师巡视指导。三、本课小结递归函数掌握lambda表达式enumerate函数序列化yield函数(迭代)装饰器课后反思时间:课题常用模块一教学目标了解什么是模块了解模块和文件掌握导入模块:模块搜索路径、import语句导入模块、from语句导入模块os模块及方法:系统相关、目录相关、路径相关、文件相关、查询相关教学重点了解模块和文件教学难点掌握导入模块os模块及方法:主要教法讲授演示法+上机操作教学过程一、新课讲授了解什么是模块模块是一个包含定义的变量,函数和类的文件,其后缀名是.py。模块可以被其他程序导入,以使用该模块中的变量,函数和类。了解模块和文件if__name__=="__main__":print‘xxxx’如果作为程序文件独立执行,__name__变量值为__main__,则执行if__name__=="__main__":后的语句。如果作为模块导入其他文件,__name__变量值为模块名,则不执行if__name__=="__main__":后的语句,在导入进的文件中调用时才对应执行。掌握导入模块模块搜索路径:importsysprintsys.path查看以列表显示的搜索路径例如:import语句导入模块importmodule导入模块importmoduleasmodule_alias以别名导入模块from语句导入模块frommodulesimportnames导入模块的指定属性或方法掌握os模块常用方法(实现跨平台的操作系统应用接口)指示正在使用的平台;如果是window则用'nt'表示,对于Linux/Unix用户,它是'posix'例如:调用系统命令的方法os.system():调用操作系统的命令;例如os.popen()调用系统命令,但结果是返回对象例如:目录相关的方法:getcwd():查看当前目录。即python脚本工作的目录路径;例如:chdir():切换目录;例如:os.walk():遍历目录树walk(top,topdown=True,onerror=None)listdir():列出指定目录下文件及子目录;如:显示c盘文件和目录:mkdir():创建目录;如:makedirs():创建多层级目录;如:rmdir():删除空目录;例如:removedirs():删除多层级空目录;例如:路径相关的方法::函数返回一个路径的目录名和文件名;例如:;如:,例如:,例如:;例如:,例如:文件相关的方法:remove():删除文件,如:rename():重命名文件,如查询相关方法os.path.exists()函数用来检验给出的路径是否真地存在,如:例如:islink():是否为链接文件文件信息相关方法:stat():查看文件状态信息getatime():访问时间getctime():状态改变时间(例如权限等)getmtime():修改时间0L,二、上机练习学生上机完成本节模块与文件的上机编程任务,教师巡视指导。三、本课小结什么是模块模块和文件掌握导入模块:模块搜索路径、import语句导入模块、from语句导入模块os模块及方法:系统相关、目录相关、路径相关、文件相关、查询相关课后反思时间:课题常用模块二教学目标掌握Random模块掌握MD5加密模块掌握Time模块掌握Sys模块教学重点掌握Random模块教学难点掌握MD5加密模块主要教法讲授演示法+上机操作教学过程一、新课讲授random模块random.randintrandom.randint()的函数原型为:random.randint(a,b),用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n:a<=n<=bprintrandom.randint(12,20)#生成的随机数n:12<=n<=20printrandom.randint(20,20)#结果永远是20#printrandom.randint(20,10)#该语句是错误的。下限必须小于上限。Random.randrange([start],stop[,step])从指定范围内,按指定基数递增的集合中获取一个随机数。如:random.randrange(10,100,2),结果相当于从[10,12,14,16,...96,98]序列中获取一个随机数Md5加密模块Time模块Sys模块sys.argv实例importsys

defreadfile(filename):#从文件中读出文件内容

'''''Printafiletothestandardoutput.'''

f=file(filename)

whileTrue:

line=f.readline()

iflen(line)==0:

break

printline,#noticecomma分别输出每行内容

f.close()

#Scriptstartsfromhere

iflen(sys.argv)<2:

print'Noactionspecified.'

sys.exit()

ifsys.argv[1].startswith('--'):

option=sys.argv[1][2:]

#fetchsys.argv[1]butwithoutthefirsttwocharacters

ifoption=='version':#当命令行参数为--version,显示版本号

print'Version1.2'

elifoption=='help':#当命令行参数为--help时,显示相关帮助内容

print'''''/

Thisprogramprintsfilestothestandardoutput.

Anynumberoffilescanbespecified.

Optionsinclude:

--version:Printstheversionnumber

--help:Displaythishelp'''

else:

print'Unknownoption.'

sys.exit()

else:

forfilenameinsys.argv[1:]:#当参数为文件名时,传入readfile,读出其内容

readfile(filename)二、上机练习学生上机完成本节Random模块、MD5加密模块、Time模块、Sys模块的上机编程任务,教师巡视指导。三、本课小结Random模块MD5加密模块Time模块Sys模块课后反思时间:课题错误与异常和正则表达式教学目标了解什么是错误了解什么是异常掌握python中的常见异常掌握检测和处理异常掌握处理异常的特殊方法:断言、抛出异常、掌握re模块教学重点掌握python中的常见异常教学难点掌握检测和处理异常掌握处理异常的特殊方法:断言、抛出异常主要教法讲授演示法+上机操作教学过程一、新课讲授了解什么是错误错误分为:语法错误和逻辑错误了解什么是异常异常:当python检测到错误(语法错误或者逻辑错误等)时,导致解释器无法继续执行下去,这时候就出现了异常.异常抛出:为程序开发人员提供了一种在运行时发现错误,进行恢复处理,继续执行的能力。掌握python中的常见异常NameError---------使用一个还未赋予对象的变量SyntaxError-------语法出错IOError-----------输入/输出操作失败,基本是无法打开文件ImportError-------无法导入模块或者包,基本是路径问题IndentationError--语法错误,代码没有正确的对齐(缩进错误)IndexError--------下标索引超出序列边界 TypeError---------传入的对象类型与要求不符AttributeError----对象没有这个属性,试图访问一个对象没有的属性或是方法掌握检测和处理异常python编程_Python异常机制try:代码段except异常类型,e:异常处理代码段,如果不知道异常类型,可以使用try:代码段exceptExcept,e:异常处理代码段;Except是通用异常类型try: 语句-->捕捉这里语句的异常exceptException1[,reason]:-->异常判断语句 语句-->异常处理语句exceptException2[,reason]:-->异常判断语句 语句-->异常处理语句except:-->空except语句用于捕捉其他异常 语句else: -->未发生异常时执行语句 finally: -->无论是否发生异常都执行 语句5,掌握处理异常的特殊方法 5.1断言 语法:assertexpression[,reason]assert是断言的关键字。执行该语句的时候,先判断表达式expression,如果表达式为真,则什么都不做;如果表达式不为真,则抛出异常了解什么是正则表达式正则表达式(RE)是由普通字符和特殊符号组成的字符串,描述了这些字符的某种组合方式,因此能按某种模式匹配一组有相似特征的字符串.了解什么是re模块Python的re模块用于实现正则表达式。掌握正则表达式中的特殊字符\d匹配任何数字\D匹配非数字字符\w匹配字母,数字,下划线\W匹配不是字母,数字,下划线的字符\s匹配空白字符\S匹配不是空白的字符掌握re模块的常用方法compile()功能:编译正则表达式用法:compile(pattern,flags=0)findall()功能:取得每个()中正则匹配的内容(没有()则整个正则匹配的部分),返回匹配列表用法:findall(pattern,string[,flags])match()匹配:从字符串的开头对模式进行匹配,如果成功,则返回一个对象;如果失败,则返回None。用法:match(pattern,string)search()搜索:search会检查字符串任意位置与给定正则表达式的搜索情况。如果搜索到成功的匹配,会返回一个匹配对象,否则返回None。用法:search(pattern,string)split()功能:正则表达式作为分隔符把字符串分割为一个列表,返回列表,最多分割max次(默认是分割所有匹配的地方)用法:split(pattern,string,max=0)importre

a=

printre.split('\.',a)sub()和subn()功能:将某字符串中匹配正则表达式模式的部分进行替换。subn()和sub()一样,但它还返回一个表示替换次数的数字;替换后的字符串和表示替换次数的数字作为一个元组返回。用法:sub(pattern,repl,string,max=0)掌握匹配或搜索返回对象的常用的方法group()返回整个正则表达式匹配的字符串,同group(0)group(i)正则表达式中第i个“()”括起来部分正则表达式匹配的内容groups()返回各个()括起来的正则表达式匹配的字符串组成的元组start()返回匹配开始的位置end()返回匹配结束的位置span()返回匹配开始和结束的位置二、上机练习学生上机完成本节python中的常见异常、检测和处理异常、处理异常的特殊方法、re模块的上机编程任务,教师巡视指导。三、本课小结什么是错误、什么是异常python中的常见异常检测和处理异常处理异常的特殊方法:断言、抛出异常、re模块课后反思时间:课题与数据库交互教学目标掌握数据库连接方法掌握数据库模块方法学会数据库操作:增加数据、删除数据、修改数据、查询数据掌握数据库关闭方法教学重点数据库操作:增加数据、删除数据、修改数据、查询数据教学难点数据库模块方法主要教法讲授演示法+上机操作教学过程一、新课讲授数据库的连接mysqldb解决依赖性yuminstallpython-develmysql-develzlib-developenssl-devel导入模块建立连接常见参数数据库模块方法commit()提交

rollback()回滚看一个简单的查询示例如下:cursor方法执行与返回值cursor方法提供两类操作:1.执行命令,2.接收返回值。

cursor用来执行命令的方法execute(self,query,args)

//执行单条sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数

executemany(self,query,args)

//移动到下一个结果集

cursor用来接收返回值的方法

//接收全部的返回结果行.

fetchall(self)

//接收size条返回结果行.如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据

fetchmany(self,size=None)

//返回一条结果行

fetchone(self)数据库操作创建databasetables

如果数据库连接存在我们可以使用execute()方法来为数据库创建表,如下所示创建表EMPLOYEE:代码如下:#!/usr/bin/python

#encoding:utf-8

importMySQLdb

#打开数据库连接

db=MySQLdb.connect("localhost","root","361way","test")

#使用cursor()方法获取操作游标

cursor=db.cursor()

#如果数据表已经存在使用execute()方法删除表。

cursor.execute("DROPTABLEIFEXISTSEMPLOYEE")

#创建数据表SQL语句

sql="""CREATETABLEEMPLOYEE(

????????FIRST_NAME?CHAR(20)NOTNULL,

????????LAST_NAME?CHAR(20),

????????AGEINT,

????????SEXCHAR(1),

????????INCOMEFLOAT)"""

cursor.execute(sql)

#关闭数据库连接

db.close()数据库插入操作代码如下:#!/usr/bin/python

#encoding:utf-8

importMySQLdb

#打开数据库连接

db=MySQLdb.connect("localhost","root","361way","test")

#使用cursor()方法获取操作游标

cursor=db.cursor()

#SQL插入语句

sql="""INSERTINTOEMPLOYEE(FIRST_NAME,

????????LAST_NAME,AGE,SEX,INCOME)

????????VALUES('Mac','Mohan',20,'M',2000)"""

try:

??#执行sql语句

??cursor.execute(sql)

??#提交到数据库执行

??mit()

except:

??#Rollbackincasethereisanyerror

??db.rollback()

#关闭数据库连接

db.close()

这里是一个单sql执行的示例,cursor.executemany的用法感兴趣的读者可以参看相关的aws主机资产管理系统示例。

上例也可以写成通过占位符传参的方式进行执行,如下:代码如下:#!/usr/bin/python

#encoding:utf-8

importMySQLdb

#打开数据库连接

db=MySQLdb.connect("localhost","testuser","test123","TESTDB")

#使用cursor()方法获取操作游标

cursor=db.cursor()

#SQL插入语句

sql="INSERTINTOEMPLOYEE(FIRST_NAME,\

??????LAST_NAME,AGE,SEX,INCOME)\

??????VALUES('%s','%s','%d','%c','%d')"%\

??????('Mac','Mohan',20,'M',2000)

try:

??#执行sql语句

??cursor.execute(sql)

??#提交到数据库执行

??mit()

except:

??#发生错误时回滚

??db.rollback()

#关闭数据库连接

db.close()

也可以以变量的方式传递参数,如下:代码如下:..................................

user_id="test"

password="password123"

con.execute('insertintoLoginvalues("%s","%s")'%\

????????????(user_id,password))

..................................3.3数据库查询操作

以查询EMPLOYEE表中salary(工资)字段大于1000的所有数据为例:代码如下:#!/usr/bin/python

#encoding:utf-8

importMySQLdb

#打开数据库连接

db=MySQLdb.connect("localhost","root","361way","test")

#使用cursor()方法获取操作游标

cursor=db.cursor()

#SQL查询语句

sql="SELECT*FROMEMPLOYEE\

??????WHEREINCOME>'%d'"%(1000)

try:

??#执行SQL语句

??cursor.execute(sql)

??#获取所有记录列表

??results=cursor.fetchall()

??forrowinresults:

?????fname=row[0]

?????lname=row[1]

?????age=row[2]

?????sex=row[3]

?????income=row[4]

?????#打印结果

?????print"fname=%s,lname=%s,age=%d,sex=%s,income=%d"%\

????????????(fname,lname,age,sex,income)

except:

??print"Error:unabletofecthdata"

#关闭数据库连接

db.close()

以上脚本执行结果如下:

fname=Mac,lname=Mohan,age=20,sex=M,income=2000definput_value():

FIRST_NAME=raw_input("FIRST_NAME_DELET:")

sql="""

deletefromemployeewhereFIRST_NAME='%s'

"""%(FIRST_NAME)

returnsql3.4数据库更新操作

更新操作用于更新数据表的的数据,以下实例将test表中的SEX字段全部修改为'M',AGE字段递增1:代码如下:#encoding:utf-8

#!/usr/bin/python

importMySQLdb

#打开数据库连接

db=MySQLdb.connect("localhost","root","361way","test")

#使用cursor()方法获取操作游标

cursor=db.cursor()

#SQL更新语句

sql="UPDATEEMPLOYEESETAGE=AGE+1

?????????????????????????WHERESEX='%c'"%('M')

try:

??#执行SQL语句

??cursor.execute(sql)

??#提交到数据库执行

??mit()

except:

??#发生错误时回滚

??db.rollback()

#关闭数据库连接

db.close()3.5删除记录语句

sql="DELETEFROMEMPLOYEEWHEREAGE>'%d'"%(20)

try:

??#执行SQL语句

??cursor.execute(sql)

??#向数据库提交

??mit()

except:

??#发生错误时回滚

??db.rollback()

对于支持事务的数据库,在Python数据库编程中,当游标建立之时,就自动开始了一个隐形的数据库事务。commit()方法游标的所有更新操作,rollback()方法回滚当前游标的所有操作。每一个方法都开始了一个新的事务。二、上机练习学生上机完成本节python中的数据库连接、数据库操作、数据库关闭的上机编程任务,教师巡视指导。三、本课小结数据库连接数据库模块方法数据库操作:增加数据、删除数据、修改数据、查询数据数据库关闭课后反思时间:课题Python实例:监测服务器硬盘、cpu、内存使用率教学目标完成教学任务实例:具体如下硬盘监控cpu监控内存监控网卡监控进程监控教学重点硬盘监控cpu监控内存监控网卡监控进程监控教学难点进程监控主要教法讲授演示法+上机操作教学过程一、学习任务学习任务:监测服务器硬盘、cpu、内存使用率任务。要求与注意事项完成教学任务实例:具体如下硬盘监控cpu监控内存监控网卡监控进程监控二、上机练习学生上机实操:提示:Psutil可以获取系统运行的进程、CPU、内存、磁盘、网络等信息,主要应用于系统监控,分析和限制系统资源以及进程的管理,它实现了类似一下ps、top、lsof、pmap、who、iotop等命令功能,并且跨平台支持32、64位操作系统,还支持2.4到3.x版本的python版本监控服务器硬盘使用率代码如下:#psutilmemoryinformations内存使用率#磁盘使用率

disk=psutil.disk_partitions()

foriindisk:

print"磁盘:%s分区格式:%s"%(i.device,i.fstype)

disk_use=psutil.disk_usage(i.device)

print"使用了:%sM,空闲:%sM,总共:%sM,使用率\033[1;31;42m%s%%\033[0m,"%(disk_use.used/1024/1024,disk_use.free/1024/1024,disk_use.total/1024/1024,disk_use.percent)

#网络使用率监控服务器cpu使用率defcpu():

whileTrue:

time.sleep(1)

cpu_liyonglv=psutil.cpu_percent()

print"当前cpu利用率:\033[1;31;42m%s%%\033[0m"%cpu_liyonglv

ifcpu_liyonglv>15.0:

baojing()

defbaojing():

i=0

whilei<10:

i+=1

time.sleep(0.5)

winsound.PlaySound("ALARM8",winsound.SND_ALIAS)

cpu()监控服务器内存使用率memory=psutil.virtual_memory()

printmemory.used

printmemory.total

ab=float(memory.used)/float(memory.total)*100

print"%.2f%%"%ab

printpsutil.swap_memory()监控服务器网卡使用率#网络使用率

count=_io_counters()

print"发送字节数:\033[1;31;42m%s\033[0mbytes,接收字节数:\033[1;31;42m%s\033[0mbytes,发送包数:%s,接收包数%s"%(count.bytes_sent,count.bytes_recv,count.packets_sent,count.packets_recv)

users=psutil.users()

print"当前登录用户:",users[0].name

#时间

curent_time=psutil.boot_time()

curent_time_1=time.strftime("%Y-%m-%d%H:%M:%S",time.localtime(curent_time))

printcurent_time_1进程监控脚本如下:#读取进程pid,名称,可执行路径

pid=psutil.pids()

fork,iinenumerate(pid):

try:

proc=psutil.Process(i)

printk,i,"%.2f%%"%(proc.memory_percent()),"%",(),proc.exe()

exceptpsutil.AccessDenied:

print"psutil.AccessDenied"三、任务展示与评价学生进行展示,完成互评与老师点评项目分值评价标准得分自评组评师评程序设计20编程技巧30调试过程运行结果30搭建合理稳固小组配合20小组成员分工及配合方面总体得分课后反思时间:课题监控服务模块开发监控与apache服务实例开发制作教学目标socket模块HYPERLINKSocket?类型HYPERLINKSocket?函数HYPERLINKsocket编程思路HYPERLINKSocket编程之服务端代码HYPERLINKSocket编程之客户端代码监控apache服务实例开发制作教学重点socket模块监控apache服务实例开发制作教学难点监控apache服务实例开发制作主要教法讲授演示法+上机操作教学过程一、新课讲授SOCKET:网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。Socket的英文原义是“孔”或“插座”。作为BSDUNIX的HYPERLINK进程通信机制,取后一种意思。通常也称作"HYPERLINK套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信socket模块Python提供了两个基本的socket模块。??第一个是Socket,它提供了标准的BSDSocketsAPI。??第二个是SocketServer,它提供了服务器中心类,可以简化网络服务器的开发。HYPERLINKSocket?类型套接字格式:socket(family,type[,protocal])?使用给定的地址族、套接字类型、协议编号(默认为0)来创建套接字。socket类型描述s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论