天池龙珠python第二天
第二天和第三天(条件语句与循环语句和异常处理)
条件语句
条件语句有:
1.if expression:
expr_true_suite
只有当expression为正确时,expr_true_suite才会执行
2. if(expression):
expr_true_suite
else:
expr_flase_suites
当expression为正确时,执行expr_true_suite,错误时,执行else后的expr_flase_suites
3.if语句支持嵌套,即在一个if语句中嵌入另一个if语句,从而构成不同层次的选择结构。
【例子】Python 使用缩进而不是大括号来标记代码块边界,因此要特别注意else的悬挂问题。
4.if - elif - else 语句
程序会判断是否符合if或者elif的条件,都不符合
则执行else里的,其中一个符合,执行其中一个,不管怎么样它只会执行其中一个
assert
assert这个关键词我们称之为“断言”,当这个关键词后边的条件为 False 时,程序自动崩溃并抛出AssertionError的异常。
循环语句
while循环:
while(布尔表达式):
语句体
当布尔表达式为真的时候,程序会一直执行语句体,直到布尔表达式为假,才会结束.
注意布尔表达式为0便是假,非0为真
while-else循环:
while 布尔表达式:
语句体
else:
语句体
注意当while循环正常执行完的情况下,执行else输出,如果while循环中执行了跳出循环的语句,比如 break,将不执行else代码块的内容。
for循环
for循环是一个迭代循环,相当于python的迭代器。
for 循环变量 in 可迭代对象:
语句块
每次循环都会把可迭代对象当前的元素交给循环变量,在语句块使用。
可迭代对象有很多,包括:字典,数组
items可以换成keys或者values来遍历键或者值
for-else循环
for 迭代变量 in 可迭代对象:
代码块
else:
代码块
它使用跟while-else一样,遇到不正常退出循环不执行else,正常退出循环则执行else
关键词range
range([start,] stop [,step=1])
range有三个参数,[]里的参数可有可无,但一定要有stop,从0开始到stop前一个数。
start:开始
stop:停止
step:步长,默认为一
函数enumerate()
enumerate(sequence,[start=0])
sequence:一个序列,可迭代的对象
start:开始的下标
break
break语句可以跳出当前所在层的循环。
continue
continue 跳出当前的循环,继续下一轮循环
pass
pass语句的意思什么事情都不干,pass语句就是空语句
当程序中确定函数名,还不确定具体的实现,可以使用pass,使程序正常执行
推导式
列表推导式:
[ expr for value in collection [if condition] ]
包含if的例子如下,把100以内是三和五倍数的,放在一个列表中:
还有有多个for和if的列子:
元组推导式:
(expr for value in collection [if condition])
[]表示可有可无
字典推导式:
{ key_expr : value_expr for room in collection [ if condition ] }
例子:
集合推导式:
{ expr for value in collection [ if condition ] }
例子:
其他推导式:
next(iterator [ ,default ])
iterator:一个可迭代对象
default:默认值
功能是迭代
例子:
异常处理
异常体系内部有层次关系,python异常体系中的部分关系如下所示:
常见的异常:
- FloatingPointError:浮点计算异常
- OverflowError:数值运算超出最大限制
- ZeroDivisionError:除数为零
- AssertionError:断言语句(assert)失败
- AttributeError:尝试访问未知的对象属性
- EOFError:没有内建输入,到达EOF标记
- EnvironmentError:操作系统异常的基类
- IOError:输入/输出操作失败
- OSError:操作系统产生的异常(例如打开一个不存在的文件)
-LookupError:无效数据查询的基类 - IndexError:索引超出序列的范围
- KeyError:字典中查找一个不存在的关键字
- MemoryError:内存溢出(可通过删除对象释放内存)
- NameError:尝试访问一个不存在的变量
-
- NotImplementedError:尚未实现的方法
- SyntaxError:语法错误导致的异常
- IndentationError:缩进错误导致的异常
- TabError:Tab和空格混用
-
- UnicodeDecodeError:Unicode解码时的异常
- UnicodeEncodeError:Unicode编码错误导致的异常
- UnicodeTranslateError:Unicode转换错误导致的异常
try-except语句
try:
检测部分
except Exception[ as reason ]:
出现异常要执行的代码
如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中
例子:
一个try可能会有多个except子句,分别处理不同的特定的异常,最多只能一个分支被执行
一旦try出现的异常,在多个except中都可以接收处理,但程序只会按最先那个except来处理,所以在使用多个except时,必须坚持对其规范排序,要从最具针对性的异常到最通用的异常。从最针对到普通的,如下图:
一个 except 子句可以同时处理多个异常,这些异常将被放在一个括号里成为一个元组。
例子如下:
try-except-finally语句
try:
检测部分
except Exception[ as reason ]:
出现异常后执行的代码
finally:
不管怎么样都会执行的代码
之前在try-except中try出现了except无法接收处理的异常,会抛给try,但在try-except-finally中,会抛给finally,例子如下:
try-except-else语句
如果try子句没有发生任何异常,python会执行else里的语句
try:
检测部分
except:
异常出现后要执行的语句
else:
如果没有任何异常,会执行的语句
例子:
注意:使用else时,try要配套except来使用,不然会报错
raise语句
python 使用 raise语句抛出一个指定的异常。
例子
第二天和第三天的总结
看似很简单,但还是要注重多用才行,多用才会记住,不然一旦时间长了,就会忘记,还要回来多看看,嗯,就这些。