迭代器与生成器
# print(1 in [1, 2,3])
# print(1 not in [1, 2, 3])
# print(4 not in {1, 2, 3})
# print(4 not in (1, 2, 3))
# print(2 in {1: 'foo', 2: 'bar', 3: 'qux'})
# print('x' not in 'xkjsi')
#可以被next()函数调用并不断返回下一个值
# (直到没有数据时抛出StopIteration错误)的对象称为迭代器,即Iterator。
# l=(1, 2, 3)
# print(type(l))
# l=iter(l)
# print(type(l))
# for i in l:
# print(i)
# print(next(l))
# a,b,c=1,2,3
# print(a+b)
# print(next(l))
# print(next(l))
# print(next(l))
#iter(可迭代对象) ===> 迭代器-->Iterator。
#迭代器内部持有一个状态,该状态用于记录当前迭代所在的位置,
#以方便下次迭代的时候获取正确的元素
#斐波那契(Fibonacci)演示 迭代器 和 生成器
def fab(max):
n,a,b=0,0,1
while n<max:
yield b
#print(b)
a,b=b,a+b
n=n+1;
#
l= fab(10)
for i in l:
print(i)
#可迭代类
class Fab(object):
def __init__(self,max):
self.max=max;
self.n,self.a,self.b=0,0,1;
def __iter__(self):
return self;
def __next__(self):
if self.n<self.max:
r= self.b;
self.a,self.b=self.b,self.a+self.b;
self.n+=1
return r;
raise StopIteration();
# f=Fab(10);
# for i in f:
# print(i)
# print( next(f))
# print( next(f))
# print( next(f))
# print( next(f))
# print( next(f))
# print( next(f))
异常# 最终要执行的内容写在finally中: #释放资源 # a=10; # b=input('请输入被除数:'); # if not b.isdigit(): # print('输入错误请输入数字:') # else: # b=int(b); # if b == 0: # print("被除数不能为0 ") # else: # c = a / b; # print(c). # try: # # b = int(b); # c = a / b; # print(c) # except ZeroDivisionError as zero: # print('被除数不能为0..异常信息:',zero) # except ValueError as v: # print('转换数字 出错 请输入数子.异常信息:',v) # except Exception: # print('发生错误!') # else: # print("程序正常结束..") # finally: # try: # del a,b,c # except Exception as e: # print(e) # print("finally: 块儿 释放资源 ") # print('程序其他代码!') class SexException(Exception): pass def inputSex(): sex=input('请输入性别:') if sex!='男' and sex!='女': raise SexException("性别只能是男 或 女 ") print('输入的性别:',sex) try: inputSex(); except SexException as s: print(s)