day14回顾:
自定义模块:
模块名:(标识符)
全局变量将成为模块的属性
导入方式:
import 语句
from import 语句
from import *语句
搜索:
1.内建模块
2.搜索当前工作路径
3. sys.path提供的路径
import mypod #执行 mypod.py
mypod.py --->---mypod.pyc----->python
模块内的序置属性
__doc__属性
__file__属性
__name__属性
__all__列表
from import *语句(只导入all列表内的)
隐藏属性
以_开头的标识符在from import *语句导入时不会被导入
random 模块
包 pack
包的导入:
import 语句 (不能使用相对导入))
import 包位置
from import 语句
from 包位置 import 子包/模块/属性
绝对位置 mypack.menu
相对位置 ..menu
from import *语句
from 包位置 import *
__init__.py (所有包必须有的)
文档字符串
函数
__all__列表
------------------------------------------------------------
day15
异常(基础) exception
什么是错误:
错误
错误是指由于逻辑或语法等导致一个程序无法正常执行的问题
什么是异常
异常是程序出错时标识的一种状态
当异常发生时,程序不会再向下执行,而转去调用此函数的地方待处理此错误并恢复为正常状态
作用:
用作信号,通知上层调用者有错误产生需要处理
try语句:
两种语法:
try-except 语句
try-finally 语句
try-except 语句
语法:(至少有1个except)
try:
可能触发异常的语句
except 错误类型1 [as 变量名1]:
异常处理语句1
except 错误类型2 [as 变量名2]:
异常处理语句2
except (错误类型3,错误类型4) [as 变量3]:
异常处理语句3
except:
异常处理语句other
else:
未发生异常语句
finally:
最终语句
作用:
尝试捕获异常通知,将程序由异常流程转为正常流程并继续执行
说明:
except 子句可以有一个或者多个,但至少有一个
示例见:
def div_apple(n):
print('现在有%d个苹果,你想分给几个人?'%n)
s=input('请输入人数:')
count=int(s)
result=n/count
print('每个人分了%d个苹果' % result)
try:
div_apple(10)
except (ValueError):
print('没有人来拿苹果,苹果被收回')
except:
print('有错误,程序已经自动转化为正常运行!')
print('程序正常结束!')
finally:
print('我一定会被执行!!!')
print('程序正常结束!')
练习:
写一个函数get_score()来获取学生输入的成绩(0~100)的数,如果用户输入的不是0~100的数
则返回0,否则返回输入的整数
def get_score():
try:
s=int(input('输入一个数'))
except:
return 0
if not 0<=s<=100:
return 0
return s
score=get_score()
print(score)
try-finally 语句:
语法:
try:
可能触发异常的语句
finally:
最终语句
说明:
finally 子句不可以省略
一定不存在except 子句
作用:
1.通常用try-finally 语句来做触发异常时必须要处理的事情,无论异常是否发生
finally子句都会被执行
2.try-finally 语句不会改变程序的(正常/异常)状态
示例:
try-finally.py
def fry_egg():
print('打开天然气')
try:
count=int(input('请输入鸡蛋个数'))
print('煎鸡蛋,共煎了%d个鸡蛋'% count)
finally:
print('关闭天然气')
try:
fry_egg()
except:
print('煎鸡蛋异常,已经转为正常')
raise语句:
作用:
出发一个错误,让程序进入异常状态
发送错误通知给调用者
语法:
rasie 异常类型
或
rasie 异常对象
或
raise #重新触发上一次异常
示例见raise.py
def fa():
print('fa--开始')
raise ValueError('故意制造了一个错误')
print('fa--结束')
def fb():
print('fb--开始')
try:
fa()
except ValueError as err:
print('fa里发生了值错误已处理')
raise
print('fb--结束')
try:
fb()
except:
print('再次收到fb的错误')
练习:
写一个函数get_age()用来获取一个人的年龄信息,规定只能输入1~140之间的整数,如果输入的是
其他的数值,则直接触发ValueError类型的错误!
def get_age():
try:
a=int(input('请输入一个数'))
if not 1<=a<=140:
raise ValueError
except ValueError:
print('获取年龄失败')
get_age()
assert语句(断言语句)
语法:
assert 真值表达式,错误数据(通常是字符串)
作用:
当真值表达式为False时,用错误数据创建一个AssertionError类型的错误
并进入异常状态
等同于:
if bool (真值表达式)==False:
raise assertionError(错误数据)
示例见:assert.py
def get_score():
s=int(input('请输入成绩'))
assert 0<=s<=100, '成绩超出范围'
return s
try:
score=get_score()
except AssertionError as err:
print('AssertionError类型的错误被触发,且已捕获')
print('err=',err)
小结:
异常处理的相关的语句:
try-except 语句:
作用:
捕获异常通知,将程序由异常状态转为正常状态
try-finally 语句
作用:
执行必须要执行的语句
raise 语句
作用:
触发异常(抛出异常),让程序进入异常流程
assert 语句
作用:
根据条件来触发AssertionError类的异常,并进入异常流程
迭代器 Iterator
什么是迭代器
迭代器是访问可迭代对象的工具、
迭代器是指用iter(obj)函数返回的对象(实例)
迭代器可以用next(it)函数获取可迭代对象的数据
迭代器函数:
iter(iterable)从可迭代对象中返回一个迭代器,iterable 必须是能提供一个迭代器的对象
next(iterator)从迭代器iterator中获取下一个记录,如果无法获取下一条记录,则触发
StopIterator异常通知
说明:
迭代器只能往前取值,不会退后
示例:
L=[1,3,5,7]
it=iter(L) # 让iter函数从L中获取迭代器
# it 绑定的是迭代器
print(next(it)) # 1
print(next(it)) # 3
print(next(it)) # 5
print(next(it)) # 7
示例:
#用迭代器和while来代替for循环语句
示例:
l=[2,3,5,7]
it=iter(l)
while True:
try:
x=next(it)
print(x)
except StopIteration:
break
练习:
有一个集合:
s={'唐僧','悟空','八戒','沙僧'}
用for 循环遍历所有元素如下:
for x in s:
print(x)
else:
print(遍历结束)
用while和迭代器改写
s={'唐僧','悟空','八戒','沙僧'}
it=iter(s)
while True:
try:
x=next(it)
print(x)
except StopIteration:
break
练习:
1.一个球从100米高空落下,每次落地后反弹高度为原高度的一半再落下
1)算出皮球在第10次落地后反弹多高
2)打印10次后球共经过多少米路程
2.分解质因素,输入一个正整数,分解质因素.
如输入:90 则打印: 90=2*3*3*5
(质因素是指最小能被原数整除的素数(不包括1))
python基础-day15
最新推荐文章于 2023-05-06 18:16:29 发布