pythonday11

迭代器与生成器

# 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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值