一、Python关键字
共: 31个。注意:如果要现在自己电脑中运行我写的这些代码,需要在第一行加上 #coding:utf-8 , 因为我的输出中有中文 。 1.and:表示逻辑‘与’ 2.del:用于list列表操作,删除一个或者连续几个元素。 3.from:导入相应的模块,用import或者from...import 4.not:表示逻辑‘非’ 5.while:while循环,允许重复执行一块语句,一般无限循环的情况下用它。示例如下:
6.as:as单独没有意思,是这样使用:with....as用来代替传统的try...finally语法的。 基本思想是 with所求值的对象必须有一个__enter__()方法,一个__exit__()方法。 紧跟 with后面的语句被求值后,返回对象的__enter__()方法被调用,这个方法的返回值将被赋值给as后面的变量。当with后面的代码块全部被执行完之后,将调用前面返回对象的__exit__()方法。示例如下:
输出结果:
第一步: __enter__()方法被执行 ; 第二步: __enter__()方法返回的值 - 这个例子中是"Foo",赋值给变量'sample' 第三步:执行代码块,打印变量 "sample"的值为 "Foo" 第四步: __exit__()方法被调用with真正强大之处是它可以处理异常。可能你已经注意到Sample类的__exit__方法有三个参数- val, type 和 trace。这些参数在异常处理中相当有用。 7.elif:和if配合使用的,if语句中的一个分支用elif表示。 8.global :定义全局变量,我的理解就是:要想给全局变量重新赋值,就要global一下全局变量(相当于告诉你:哦,注意了!下面我要设定全局变量的值的),之后在重新赋值。示例如下:
输出结果:
9.or:表示逻辑“或” 10.with:和as一起用,使用的方法请看as,在上面! 11.assert:表示断言(断言一个条件就是真的,如果断言出错则抛出异常)用于声明某个条件为真,如果该条件不是真的,则抛出异常:AssertionError 12.else:看下面if的解释 13.if:if语句用于选择分支,依据条件选择执行那个语句块。(这里多说一句:if语句中最好不要嵌套if语句,你可以把嵌套的if语句写在另一个函数中) ;
14.pass:pass的意思就是什么都不做。用途及理解:当我们写一个软件的框架的时候,具体方法啊,类啊之类的都不写,等着后续工作在做。那么就在方法和类里面加上pass,那样编译起来就不会报错了!就像这样:
15.yield:用起来和return很像,但它返回的是一个生成器。我这样说不是很生动。你可以去看看这个关于Python中的yield(最后写的那个斐波那契,我觉得他就是大神),或者请看下面的代码:
输出结果:
16.break : 作用是终止循环,程序走到break的地方就是循环结束的时候。(有点强行终止的意思)注意:如果从for或while循环中终止(break)之后 ,else语句不执行。 17.except:和try一起使用,用来捕获异常。
该种 Python异常处理语法的规则是: ◆执行 try下的语句,如果引发异常,则执行过程会跳到第一个except语句。 ◆如果第一个 except中定义的异常与引发的异常匹配,则执行该except中的语句。 ◆如果引发的异常不匹配第一个 except,则会搜索第二个 except,允许编写的except数量没有限制。 ◆如果所有的 except都不匹配,则异常会传递到下一个调用本代码的最高层try代码中。 ◆ 如果没有发生异常,则执行else块代码。 第一种格式:
第二种:
输出结果:
18.import:用来导入模块,有时这样用from....import 19.print:输出 20.class:定义类 21exec:我还没弄懂exec语句用来执行储存在字符串或者文件中的python语句。可以生成一个包含python代码的字符串,然后使用exec语句执行这些语句。 22.in:查找列表中是否包含某个元素,或者字符串a是否包含字符串b。需要注意的是:不可以查看list1是否包含list2。代码如下:
输出结果为:
23.raise:raise可以显示地引发异常。一旦执行raise语句,后面的代码就不执行了
输出结果如下:
24.continue:跳过continue后面循环块中的语句,继续进行下一轮循环。 25.finally:看到finally语句,必然执行finally语句的代码块。 python异常总结,请看下面的代码: One:
Two:
我们为什么要写 finally,是因为防止程序抛出异常最后不能关闭文件,但是需要关闭文件有一个前提就是文件已经打开了。 在第一段错误代码中,如果异常发生在 f=open(‘xxx’)的时候,比如文件不存在,立马就可以知道执行f.close()是没有意义的。改正后的解决方案就是第二段代码。 26.is:Python中的对象包含三要素:id、type、value ; 其中 id用来唯一标识一个对象,type标识对象的类型,value是对象的值 ; is判断的是a对象是否就是b对象,是通过id来判断的 ; ==判断的是a对象的值是否和b对象的值相等,是通过value来判断的 。
27.return:用于跳出函数,也可以在跳出的同时返回一个值。 28.def:用于定义方法 29.for:for....in 一起使用:它在一序列的对象上递归,就是遍历队列中的每个项目 30.lambda:即匿名函数,不用想给函数起什么名字。提升了代码的简洁程度。如:
输出结果:
31.try:出现在异常处理中,使用格式为:try...except,try中放想要执行的语句,except捕获异常
二、Python 运算符
什么是运算符? 本节主要说明Python的运算符。举个简单的例子 4 +5 = 9 。例子中,4 和 5 被称为操作数,"+" 称为运算符。 Python语言支持以下类型的运算符: 1 、 算术运算符 ; 2 、 比较(关系)运算符 ; 3 、 赋值运算符 ; 4 、 逻辑运算符 ; 5 、 位运算符 ; 6 、 成员运算符 ; 7 、 身份运算符 ; 8 、 运算符优先级 ; 接下来让我们一个个来学习Python的运算符。
1)Python算术运算符
以下假设变量: a=10,b=20 :
以下实例演示了Python所有算术运算符的操作:
以上实例输出结果:
注意: Python2.x 里,整数除整数,只能得出整数。如果要得到小数部分,把其中一个数改成浮点数即可。
2)Python比较运算符
以下假设变量a为10,变量b为20:
以下实例演示了Python所有比较运算符的操作:
以上实例输出结果:
3)Python赋值运算符
以下假设变量a为10,变量b为20:
以下实例演示了Python所有赋值运算符的操作:
以上实例输出结果:
4)Python位运算符
按位运算符是把数字看作二进制来进行计算的。Python中的按位运算法则如下: 下表中变量 a 为 60,b 为 13,二进制格式如下:
以下实例演示了Python所有位运算符的操作:
以上实例输出结果:
5)Python逻辑运算符
Python语言支持逻辑运算符,以下假设变量 a 为 10, b为 20: 以上实例输出结果:
以上实例输出结果:
6)Python成员运算符
除了以上的一些运算符之外,Python还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组。
以下实例演示了Python所有成员运算符的操作:
以上实例输出结果:
7)Python身份运算符
身份运算符用于比较两个对象的存储单元
注: id() 函数用于获取对象内存地址。 以下实例演示了Python所有身份运算符的操作:
以上实例输出结果:
is 与 == 区别: is 用于判断两个变量引用对象是否为同一个(同一块内存空间), == 用于判断引用变量的值是否相等。
8)Python运算符优先级
以下表格列出了从最高到最低优先级的所有运算符:
以下实例演示了Python所有运算符优先级的操作:
以上实例输出结果:
三、解析Python的缩进规则
Python中的缩进(Indentation)决定了代码的作用域范围。这一点和传统的c/c++有很大的不同(传统的c/c++使用花括号花括号{}符决定作用域的范围;python使用缩进空格来表示作用域的范围,相同缩进行的代码是处于同一范围)。
每行代码中开头的空格数(whitespace)用于计算该行代码的缩进级别(Indentation level),注意一个Tab会被替换为1~8个Space(具体的空格数量,不同的编译器有不同的数量),缩进级别为0表示无缩进空格。
在一个源文件不建议同时使用空格和制表缩进符,当使用别人代码的时候几乎是不可能知道别人使用的是空格还是制表符,这时最好统一缩进,在IDEL编辑器中可以使用 Edit > Untabify Region 将任何制表符转化为空格。 Python中的每一条语句都有一个缩进级别,并且缩进级别会使用栈的数据结构进行存储。在开始读取文件之前,0(表示缩进级别为0,无缩进)会被首先压入栈中。然后从文件开头到末尾,依次读取每行逻辑代码,每行逻辑代码的缩进级别都会和栈顶值进行比较,如果相等,那么什么都不会发生;如果比栈顶值大的话,那么该行逻辑代码的缩进级别就会被压入栈中,同时会生成一个缩进标记(INDENT TOKEN);如果比栈顶值小的话,那么栈中所有比该行逻辑代码缩进级别大的值都会从栈中移除,并且还会生成一个扩展标记(DEDENT TOKEN)。
下面是一个正确的缩进案例:
上面的#0行,缩进0个字符,由于文件读取之前0已经被压入栈中了,所以栈中的数据不会发生改变。#1缩进4个字符,4被压入栈中。#2缩进18个字符,18被压入栈中。#3缩进4个字符,18被弹出栈,栈顶值又为4了。#4和#3缩进一样,所以不更新栈数据。#5缩进13个字符,所以13被压入栈中。#5、#6和#7的缩进一样,不更新栈数据。#8缩进14个字符,14被压入栈中。#9的缩进4个字符,所以栈中的13和14都会弹出,栈顶值又恢复为4。
下面是一个错误的案例
#1、#2和#3处的错误解释的很清楚了。#5的缩进级别在栈中找不到所以出错,#5处的缩进级别是14,比它的上面一行缩进级别18,所以在#5处应该进行出栈处理,但是在栈中找不到14这个级别,所以出错。 又比如:
最后一行代码的缩进级别是1,而且比上一行代码的缩进级别小,所以应该出栈处理,但是在出站的时候找不到栈中以前有1的级别,所以报错。修改这个错误,只需要将最后一行的空格去掉就可以。
四、分支结构
分支结构是根据判断条件结果而选择不同向前路径的运行方式,分支结构分为:单分支,二分支和多分支。
1)单分支结构
单分支结构是分支结构中最简单的一种方式,它的使用方法如下:
单分支结构只需要判断一个条件,根据这个条件是否成立来决定是否执行一段语句。 实例1:猜数字
2)二分支结构
二分支结构是根据条件判断的不同而选择不同执行路径的一种分支结构,它的使用方法如下:
二分支结构也只需要判断一个条件,根据这个条件来决定执行的语句块,成立执行语句块1,不成立执行语句块2。 实例2:猜数字
3)多分支
多分支结构是根据不同条件来选择语句块运行的一种分支结构,它的使用方法如下:
多分支结构需要判断多个条件,根据判断当前条件是否成立来决定是否执行当前语句块,当所有条件都不成立时,执行else的语句块。 实例3:猜数字
注意! : Python的代码块是通过缩进来标记的,具有相同缩进的多行代码属于同一个代码块,注意 if 条件后的条件执行体一定要缩进,只有缩进后的代码才能 算条件 执行体。另外位于同一个代码块中的所有语句必须保持相同的缩进,既不能多,也不能少。 if、else、elif 后的条件执行体必须使用相同缩进的代码块,将这个代码块整体作为条件执行体。当 if 后有多条语句作为条件执行体时,如果忘记了缩进某一行代码,则会引起语法错误。
五.条件判断
1)条件判断操作符
2)条件组合关键字(Python保留字)
六.异常处理
当使用以下实例时
如果不输入数字,而输入字符串,此时会出现如下报错:
此时就需要使用到Python通过的异常处理的相关机制,异常处理有两种非常基本的使用方法,使用保留字try和except,格式如下:
放在try中的语句块1如果出现异常,将会在except中查找相同的异常类型,执行相应的语句块。如果except后面不跟随异常类型,那么就必须是最后一个except,表示除以上提到的异常类型,其余的异常都采用这个except的语句块。 实例:
异常处理的高级用法使用到了保留字try、except、else和finally,格式如下:
多出来的else语句块在没有发生异常时执行,finally语句块一定执行 。
七.循环结构
循环语句分为:遍历循环和无限循环
1)遍历循环
遍历循环指遍历某一个结构形成的循环运行方式,它的使用方法如下:
简单说遍历循环是由for in保留字构成的循环结构,它可以从遍历结构中逐一提取元素放到循环变量里。当遍历结构中的所有元素都放入循环变量,并且都已循环执行之后,那么循环程序退出。 注意:遍历结构不是一种特殊的类型,它可以是range(m,n,k)、字符串、序列等等。 当遍历结构采用range(m,n,k)时,可以称这种遍历循环结构为计数循环,通过range(m,n,k)产生一个数字序列,这个序列包含(n-m)/k个元素,每个元素都是整数。实例如下:
当遍历结构采用字符串时,可以称这种遍历循环结构为字符串遍历循环,循环变量将会遍历字符串的每一个字符。实例如下:
当遍历结构采用列表时,可以称这个遍历结构为列表遍历循环,循环变量将会遍历列表中的每一个元素。(其他序列也可作为遍历结构)实例如下:
当变量结构采用文件(标识符)时,可以称这个遍历结构为文件遍历循环,循环变量将会遍历文件的每一行。 一般只要是多个元素组成的数据类型,都可以被采用。
2)无限循环
无限循环是由条件控制的循环运行方式,它的使用方法如下:
简单来说,它已经不再是遍历某一个结构,而是根据条件判断来进行循环。如果这个条件成立,那么下面的语句块就会被执行,执行之后再次判断条件,如果这个条件再次成立,它就会继续再执行下面的语句块,然后再回来判断循环。所以无限循环是反复执行语句块,直到条件不满足时结束。 实例:
如果不小心写成了死循环,可以使用 +退出循环。
3)循环控制保留字break和continue
和其他语言一样, Python通过了两个循环控制保留字break和continue(几乎所有的语言都是这两个)。break表示结束当前所在循环,continue表示跳过当次循环并不影响循环的继续,它们都可以与for循环和while循环搭配使用。 continue实例:
b reak 实例:
注意:使用 break时,注意其所在的循环位置,只跳出break所在的循环。
4)循环的高级用法
循环可以和 else搭配使用,else与循环处于同一级,在循环语句之后,使用方法如下:
无论是 for还是while,当循环没有被break保留字退出时(允许存在break),此时执行else的语句块。简单来讲,else语句块可以作为“正常”完成循环的一种奖励,与异常处理中的else类似。 实例 1:
实例2:
八、Python递归的经典案例
1)递归的百度百科定义
2)递归的通俗理解
我想到一个比较接近我们生活的例子,和那个传本子的例子类似,比如你喜欢一个女孩,你想告诉她,但你和她座位隔得很远,你写好了纸条,想同学传过去,于是,你把纸条传给你前面的同学,然后同学又向前传,直到传到你喜欢的那个女孩手里,但是女孩已经有喜欢的人了,于是,她也写了一个纸条让原来的同学再传回来给你,那么同学之间打招呼传纸条的行为就可以看作是函数调用,你是最初调用的函数,那个你喜欢的女孩就是最终的目的地,纸条上的信息就是初始值和最终答案。
3)最简单的递归的实例
4)递归的特点
通过以上的介绍,我们大致可以总结出递归的以下几个特点: A: 必须有一个明确的结束条件 B:每次进入更深一层递归时,问题规模(计算量)相比上次递归都应有所减少 C:递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出) 关于递归还有两个名词,可以概括递归实现的过程
5)递归经典案例
A 递归求阶乘
B 递归推斐波那契数列
C 二分法找有序列表指定值
小编的分享今天就到这里啦,同学们是否已经对P ython 中的分支结构和循环结构有了很清晰的了解呢?希望大家在接下来的学习中收获更多! 撰稿人:刘然 李玉 牛静 审核人:常世杰 周鹏