当前课程知识点:Python 交互式程序设计导论 >  第1周 >  B 课程视频(逻辑及表达式) >  编程技巧

返回《Python 交互式程序设计导论》慕课在线视频课程列表

编程技巧在线视频

编程技巧

下一节:“老虎杠子鸡虫”游戏

返回《Python 交互式程序设计导论》慕课在线视频列表

编程技巧课程教案、知识点、字幕

今天是我们编程技巧的第一节课

在这节课上我们将通过几个例子

给大家介绍一下

在编写Python代码的时候经常会碰见哪些错误

碰到这些错误的时候该怎么去分析怎么解决

下面开始今天的课程

好,我们先看第一例子

我先运行一下

大家看下面有一个错误提示

我们这个函数是用来计算圆周长的一个函数

我们知道圆周长是2 *PI* R(R代表圆的半径)

但是这个程序出错了,我们看一下

在我们Python里面

当出现错误的时候一般它都会给你一个连接

这连接点击之后就会定位到出错的那一行代码处

比如说现在是第7行出错了

我们先看下错误信息

NameError,NameError的意思是名字错误了

我们看一下到底是哪个名字错误了

它说这个变量名没有定义

我们看一下变量名是哪一个?就是它

哦,这是一个函数的名字了

在这个打印函数里面,调用了我计算圆周长的函数

想计算下当半径等于2的时候,它的圆周长因该是多少,对吧

那我们看一下,回到前面圆周长函数的定义发现

我两个写的不一样,对不对

这个呢有一个下划线有一个circle圆周长

这个只写了一个perimeter,哦,不对

所以它会提示我这个没有定义

确实,前面没有这个变量的定义

哦,好,我给它修改一下

好,回车,我再来运行一下

嗯… 刚才的那个错误已经没有了

但是,它又出现了一个错误

仍然是命名错误,我们这次看一下

它说半径radis没有定义,Not defined 是没有定义的意思啊

嗯,这个变量没有定义么

看,我们Python错误的跟踪信息

它都是从最外行(最外层)开始,你看

比如说是在这个地方,调用了它

然后它继续跟踪,跟踪下来之后

在下一行,它说是在第四行处

具体的错误就在第四行,这个半径没有定义

但是,我确实给它传入了一个参数叫radius

看一下,哦,发现我太粗心了哦

我又写错了,还有一个u,好,我把它写上

加上u了,继续运行,好了,这次是没有问题了

当半径等于2的时候圆周长是12.56,没问题

那在这个计算圆周长的函数里面,我的PI呢,是3.14来代替的

那其实我们学数学的时候已经知道

嗯… PI是一个很长的一串数字,对吧

我们一般都能背出3.1415926,后面当然还有很多

那我这个地方呢,我不想简写

我想用真实的那个PI值来计算,它到底是什么样

好,我们数学里面PI是怎么字写的

这个,这么写的,我看我数学里面PI这个符号

在我Python语言到底能不能认识

点击运行,好,它出错了,我直接看错误行了

同样是NameError ,现在我们就知道

如果发生NameError的时候,一般是变量名没有被定义,哦,没有定义

PI 呢,没有定义,看来它不认识了,它不认识怎么办?

在我们Python里面呢,所有跟数学相关的计算

我们都把它放在一个math这样一个模块里面去

那好,我写math ,就是数学的意思啊

math.我要用math里面的方法或者变量我就要用math.了,

PI,好,然后我们在运行一下

恩… 又错了,同样是NameError,math没有定义

看,那我math是我Python里面的一个标准模块

大家在我们的Python教材里面最后面

Python的参考资料里面可以找到math模块的介绍

既然是Python里面的标准模块,为什么提示我没有定义呢

难道它不认识吗?这个是这样的,如果你要用其他模块

不管是Python里面自己的模块还是以后你自己写的一个模块

或者一个py文件吧,你要用到里面的东西

用到的不管是函数、变量还是什么,你都要引入这个模块

引入了,你用的是import这个关键字

imp,好,它已经下面提示我了哦

好,回车,math,好,import math

这个地方要一个空格就可以了,引入之后我再运行一下

好了,它错误已经变了,现在,变成了属性错误,看到了没有

Attribute是属性的意思,这个在后面我们学到类的时候大家会对这个概念更加的清楚

是属性错误了,后面解释说,这个module没有

这个module,当然就指的我们的math了哦

说math这个模块里面没有Pi这个属性

看来我有把Pi这个Pi给写错了,再来,我再来

因为我们PyCharm这个工具非常好

它有很好的提示功能

.敲个p,第一行就是pi是吧

发现p是小写,刚才呢把它写成大写了

我在运行一下,好,ok,没有问题了

你看,它后面保留了,2,4,6,8,10,12,15 位小数啊

这个呢,是我们第一个例子

大家在写的时候呢,经常会由于手误呀

而且刚开始写代码的时候也很不熟悉哦

经常会犯这样的命名错误

就是你调用一个函数或者一个变量的时候把名字给写错了

或者说比没有定义它你就去使用了都会出现NameError这个错误

然后呢,你要引入一个模块的里面的属性或者方法的话

一定要用import来导入这个模块

才可以它里面的一些属性或函数噢

好,我们现在看第二个例子

我,我首先呢,我先运行下,它出现了另外一个错误

我这好例子呢,使计算长方形面积的

长方形的面积是长*宽

我看下错误提示是什么?

这个意思是语法错误

Syntax是语法的意思啊,Error就是错误了

那我们英语里面有英语的语法,汉语里面我们有汉语自己的语法规则

当然我们在Python语言里面,它也有它自己的语法了

它有自己的一些要求、规则

我们看下错误行,点击链接,在第三行,那个错了呢?

函数参数列表呢,必须是括号开头,括号结束

后面要写上冒号都没有问题

我们发现这个括号和这个括号不太一样

在我们Python里面所有的符号

都必须要英文的半角的符号

好,改一下,改掉了,再运行

这次错误发生了变化,我再来看一下

同样是语法错误,哪里写错了呢

无效的字符,在这个里面呢有无效的字符

嗯… 我点下错误行

在这一行,噢,这两个逗号明显不一样

刚才才说过在Python里面所有的符号都必须是英文半角的符号

好,没问题,再点击运行下

明显错误已经变了啊,刚才的那个错误已经解决掉了

根据经验我们直接联到这一行了,最内层

错误在第四行,TypeError,类型错误,Type是类型的意思

类型错误,说不能成序列,然后呢,字符串,对吧,字符串类型它是非整形的

说我不能用字符串这个序列来进行相乘,这是什么意思?

我不是计算长方形面积的时候,它要么是小数,要么是整数

不可能是字符串吧,我看下,我是不是哪里写错了

好,我在这,发现,我l和w这两个变量呢

定义的是确实是字符串,对吧

因为在我们Python里面用双引号或者单引号引起来都叫字符串

那在Python语言里面它认为,字符串呢是一种序列,是不能用来做乘法运算的

好,我把它引号给删掉,删掉,然后在继续运行

错误没有问题,长为5,宽为2的时候面积为10

这是我们第二个例子

在Python里面所有的符号,不管是括号、逗号、冒号我们都要用到英文的符号

而不能用我们中文里面的符号,这个写的时候大家要注意

好,第三个例子,我先运行下

嗯… 同样,很熟悉了吧,语法错误,无效的语法,没有用的语法嘛

点击一下,这一行,看一眼,括号没有写错,逗号没有写错

缺少冒号,加上,为啥?

所有在我们Python里面定义函数的时候

后面还有if条件语句、for循环、while循环的时候都要用到冒号

在我们的函数头这个地方,一定要加上冒号啊

我再运行,好了,错误已经发生了变化,NameError又是一命名错误

它说w没有定义,定位一下在第八行,w在这

w没有定义么?我要计算三角形的面积,然后我传入了两个参数

前面看一下,前面一看,哦,我定义的变量是b和h

而我这个地方传入参数的时候用的w和l,对吧

所以我们Python是很聪明的,它发现你这个变量没有定义

立马就会给你提示错误信息了,改一下,b,h

再运行,好这次没有问题了,直角三角形底为4,高为2的时候面积就是4了

为什么是4.0 呢?因为我这个地方是小数0.5相乘,它会自动转化成小数,所以是4.0

这个例子呢主要是跟(给)大家讲,你在定义一个函数的时候

函数结束的时候一定要加上冒号,而且是英文的冒号,不能写成我们汉语的冒号

它这两个呢还是挺有差别的,看,很有,区别很大哦,大家写的时候一定要眼睛很尖

一下就能看出来,好我们继续看下一个例子

第四个例子,我先运行一下,同样是语法错误,SyntaxError,无效的语法

我定位一下,在第五行,我这个是怎么样,我输入一个动物的名字

它就会给我打印出这个动物的叫声,对吧

你看小狗打印的是汪汪,猫打印的是喵喵,其他的就输入错误了

说明它只能显示这两种,那它哪里错了呢?

我代码好像没有错误,但是它确实错了

大家注意看,我是想让输入的这个参数和这个Dog这个字符串进行比较

比较两个相等呢,还是不相等,但是我用了一个等号

一个等号在我们Python是赋值的意思,就是说

我定义一个变量等于3,虽然我把它念的是等于啊

但,其实它是把3这个整数赋值给a这个变量

这个地方我是用来判断两个相等与不相等,因该怎么样?

是两个等号,你看,这个就没有问题了,我在继续把下面的也改了,两个等号。

好,然后,我在继续运行一下,错误发生了变化,对不对

在点击,第四行语法错误,无效的语法,这次为什么错了呢?

因为我的缩进不对,因为在我们的Python语言里面,它的层次结构是通过缩进来表示的

那缩进呢,我们主要是靠空格,你看

if和这个elif和else 因该是同一级别,他们都属于if条件,对吧

那么,应该属于同一级别的时候,空格数因该是一样的

1,2,3,4建议我们打四个,然后这个也是四个,这个也是四个

好,他们终于保持了一致,啊,保持一致,它还会提示我错误

在看一下,在这一行,这个是缩进错误啊,这个意思是缩进的意思

说需要一个一致的代码块,好,我在看一下,你看啊

If和elif,else 是一层,它们的里面具体的执行语句呢就是下一层代码了

所以我们要与它进行一个分隔,最好呢,它是第一级,它是第二级一样

第一级和第二级之间要有区分的,在敲四个空格,1,2,3,4,同样我下面要对齐

好,现在没有问题了,没问题了吧

这个例子呢,主要是想告诉大家,我们在Python里面,是通过缩进来识别代码块的

什么叫做代码块呢?一个if条件分支它就是一个代码块

那我一个函数也可以认为是一个代码块

我们通过不同的缩进来判断代码行之间的关系

就好像if是一级别,然后那它下面的执行语句是另外的一级别

缩进几个空格当然都是可以的,但是我们建议大家缩进四个空格

好,这是我们第四个例子

最后,看我们第五个例子

我先运行一下,嗯…程序没有任何问题啊,调上去

看我,我这个是中文大写1,这个是阿拉伯数字1

我想把数字1转化为大写的1,没错,返回结果也是对的

那这个有什么问题呢?所有我们的代码写出来之后首先是自己看,对吧,自己来阅读

其次呢,是给别人看的,那可能你对你代码写的时候你是比较清除的哦

那别人一看你代码,就感觉,如果你的代码写的不太好的话

别人就搞不清楚你的这个函数或者这个程序到底是用来做什么的,隔一段时间之后

你自己可能也就不知道,你到底写它的时候是用来做什么了,对吧

所以,我们强烈建议大家在写函数的时候,包括在写程序的时候吧

你所有的变量名、函数名、类名后面我们都要有意义

都是能充分反映出这段代码是用来干什么的名字哦

看我们这个呢,是把阿拉伯数字转化成我们中文里面大写的数字

那数字用那个单词,number,大家都很清楚了,下划线

在我们Python里面写函数的时候,函数名一般是单词之间用下划线来分割

Number转化呢,用to这个单词,中文是那个chinese,number,num好这个我就转化完了

转化完了之后呢这个名字很清楚了是吧,一看就知道它在做什么,还可以再继续修改

就是我们数字呢我们一般num也可以表示数字,简写,后面我们也改一下num

好,修改掉了,同样Ctrl+C,我要把这个地方调用给它修改掉,省的到时候就给我报错

又说没有定义,运行,没有问题,那还有一个问题没改呢

变量,我的输入参数n,这个n呢,让我觉得很奇怪,n到底是什么呢?

那其实它因该是数字了,我把它改成数字吧,直接就是数字num,1,2,number后面我都要改了

Ctrl+C 复制,粘贴,每一个都要改,如果你不改的话,它就会提示你,错误了

好,再运行一下,我们一定要养成良好的习惯,修改你的程序的时候

每修改一步一定要及时的去运行一下,看结果是不是对的

如果你把所有的错误修改了然后再去运行

突然间再出现一个问题的时候你就要从头再看了,是吧

所以,你每修改一个小小的问题就赶紧去运行一下,看一下程序有没有问题

那还有一个问题,我通过这个名字是能看出来这个函数是做什么的

那我还可以做什么,给它加注释,我们Python里面加注释有两种方式

一种是”#”号开头的,只能写一行注释,那另一种就是文本字符串

文本字符串是我们Python很重要的一个工具,因为它支持多行注释

有时候你对一个函数的说明,一行是无法来说的很清楚的,对吧

那文本字符串呢,它是一个多行的字符串,可以支持你进行多行注释

文本字符串呢,一般用三重引号,指的就是三对双引号,或者三对单引号的可以

而且我们的文本字符串因该非常明确的,指出来以下两点

一个呢,是它是用来做什么的?

不管是我们对函数的注释还是对变量还是对后面的类进行注释

我们都要先告诉,它是用来做什么的

第二它的返回值是什么,而且还因该包括返回类型是整数啊,列表啊,什么的

这是我们文本字符串里面最最重要因该做到两点啊

好,我们来加上文本字符串,我来加了,我用上双引号吧

在我的PyCharm里面,当我敲入三个双引号后敲回车键的时候

它就已经自动给我补充了是吧,前面给我空了一行

这是文本字符串的默认格式就是首先会空上一行,空行

然后它写的参数是number,返回值是,没有写,对吧

那我给它补充全,返回值是什么,中文大写数字,ok,没有问题吧

第二种呢,是,再给大家讲一下“#”,这种单行注释,它只写一行注释啊

它只能写一行,比如说我在这写了,将阿拉伯数字转化为中文大写的数字

Ok,它也说明这个函数是用来做什么的,这样的话,在你过了很长的时间之后呢

你一看它的注释信息你就能很清楚,你当时写这个函数的时候,做了哪些事情

好,那我们今天的编程技巧课就上到这里,下次课再见

Python 交互式程序设计导论课程列表:

第0周

-课程简介

--课程简介

-A 课程视频(算数操作符及表达式)

--绪论

--Python交互式解释器使用方法

--PyCharm集成开发环境介绍

--算数操作符及表达式

-B 课程视频(变量及赋值)

--变量

--项目提交

--“我喜欢Python”热身小项目

-C 辅助视频(计算机结构、Python开发环境安装)

--Windows平台安装Python开发环境

--Mac平台安装Python开发环境

-D 辅助视频(如何提交项目)

--项目提交

-第0周--小测验

-本周项目:"我喜欢Python"

--项目发布、完成、提交及评分流程

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

--项目提交

第1周

-A 课程视频(函数)

--函数

--其它操作符

--随机函数

-B 课程视频(逻辑及表达式)

--逻辑值和比较

--条件

--编程技巧

--“老虎杠子鸡虫”游戏

-第1周--小测验

-本周项目:“老虎杠子鸡虫”游戏

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第2周

-A 课程视频(Python交互式应用)

--事件驱动编程

--事件可视化跟踪执行

--SimpleGUITk

--按钮

-B 课程视频(输入框、全局变量)

--输入框

--局部变量和全局变量

--编程技巧

--“猫咪藏在哪个房间”游戏

-第2周--小测验A

-第2周--小测验B

-本周项目:猫咪藏在哪个房间

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第3周

-A 课程视频(画布绘图)

--画布和图形绘制

--字符串处理

--绘图和计时器可视化跟踪执行

--图片和音效

-B 课程视频(计时器)

--计时器

--交互式绘图

--“神奇时钟”游戏

--编程技巧

-第3周--小测验A

-第3周--小测验B

-本周项目:“神奇时钟”

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第4周

-A 课程视频(列表)

--列表

--键盘输入

--列表及变化可视化跟踪执行

--碰撞和反射

-B 课程视频(键盘控制)

--速度控制

--运动

--编程技巧

--“桌上冰球”游戏

-第4周--小测验A

-第4周--小测验B

-本周项目:“桌上冰球”游戏

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第5周

-A 课程视频(鼠标输入、列表进阶)

--鼠标输入

--Video

--Video

--Video

-B 课程视频(字典和图片)

--Video

--Video

--Video

--Video

-第5周--小测验A

-第5周--小测验B

-本周项目:“世界杯八强连连看”

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第6周

-A 课程视频(类)

--面向对象编程(类和对象入门)

--面向对象编程(类和对象进阶)

--对象可视化跟踪执行

--华容道中的类

-B 课程视频(平铺图片)

--平铺图片

--理解对象

--编程技巧

--“华容道”游戏

-第6周--小测验A

-第6周--小测验B

-本周项目:“华容道”游戏

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第7周

-A 课程视频(类进阶及文件操作)

--集合

--文件操作

--文字块类

--处理停止的文字块

-B 课程视频(游戏状态控制)

--游戏记分规则

--游戏结束的条件及处理

--编程技巧

--“决战三字经”游戏

-第7周--小测验A

-第7周--小测验B

-本周项目:决战三字经

--游戏说明

--程序说明

--编程步骤

--评分标准

--项目模板

第8周

-A、课程视屏(精灵集合)

--Video

--精灵类

--战士类

--编程技巧

-B、课程视屏(动画)

--精灵碰撞

--精灵动画

--编程技巧

--保卫家园游戏

-第8周--小测验

-本周项目:守卫家园

--游戏说明

--程序说明

--编程步骤

--评分标准

--项目模板

编程技巧笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。