""" for循环实例 """# 九九乘法表for i inrange(1,10):for j inrange(1, i +1):print("%-7s"%"{}x{}={}".format(j, i, j * i), end=" ")print()""" while循环实例 """# 符号楼梯whileTrue:# 信息录入height =int(input("请输入楼梯高度>>>"))symbol =input("请输入符号>>>")if height <=0:continue# 生成符号楼梯i =0while i <= height:print(symbol * i)i +=1# 是否退出ifinput("按Q键退出,否则继续").upper()=='Q':break
生成式
"""元组生成式 由于元组不可变 所以不能往元组里面‘添加新的值’ 即不可‘生成’""""""列表生成式"""# 基本操作:
list_basic =["神兽金刚","百变金刚","雷神风暴"]
list_1 =[]for name in list_basic:if name.endswith("金刚"):list_1.append(name)# 生成式操作:
list_1 =[name for name in list_basic if name.endswith("金刚")]"""字典生成式"""
list_basic =["神兽金刚","百变金刚","神兽金刚","金刚雷神风暴"]
dict_1 ={list_basic.index(i): i for i in(list_basic)}"""集合生成式"""
list_basic =["神兽金刚","百变金刚","金刚雷神风暴","神兽金刚"]
set_1 ={name for name in list_basic if name.endswith("金刚")}"""生成器表达式"""
list_basic =["神兽金刚","百变金刚","金刚雷神风暴","神兽金刚"]
res =(name for name in list_basic)"""
知识补充:
———————————————————————————————————————————————————————————
1.
Python中生成器能做到迭代器能做的所有事,
而且因为自动创建了__iter__()和next()方法,
生成器显得特别简洁。
而且生成器也是高效的,
使用生成器表达式取代列表解析,同时节省内存。
除了创建和保持程序状态的自动生成,当发生器终结时
还会自动抛出StopIterration异常。
———————————————————————————————————————————————————————————
2.
列表、元组、字典、字符串都是可迭代对象。
数字、布尔值都是不可迭代的。
———————————————————————————————————————————————————————————
3.
什么是迭代器?
迭代器对象要求支持迭代器协议的对象。
在Python中,支持迭代器协议
就是实现对象的__iter__()和next()方法。
其中__iter__()方法返回迭代器对象本身,
next()方法返回容器的下一个元素,在结尾时引发StopIteration异常。例子:
list = [1,2,3,4] # list是可迭代对象
lterator = iter(list) # 通过iter()方法取得list的迭代器
print(next(lterator)) # 1 通过next()获取下一个位置的值
print(next(lterator)) # 2
print(next(lterator)) # 3
print(next(lterator)) # 4输出:
1
2
3
4———————————————————————————————————————————————————————————
4.
什么是生成器?
生成器(generator)就是一个函数,
它提供了一种实现迭代器协议的便捷方式。
生成器与普通函数的区别在于它包含 yield 表达式,
并且不需要定义 __iter__()和__next__()。
生成器是一种惰性的序列,
如果我们需要创建一个 0~1000000000 的序列,
这样大的序列创建出来会占用比较多的内存,
生成器就是为了解决这样的问题。例子:# 普通序列
g = []
for x in range(5):g.append(x)# g ----> [0, 1, 2, 3, 4]# 生成器
def f():for x in range(5):yield x # 返回并记录函数状态# next
f = f()
>>> next(f) # 每调用一次next,就执行一次yield | 依靠这种需要才生产的工作机制,大大的节省资源
0
>>> next(f)
1
>>> next(f)
2
>>> next(f)
3
>>> next(f)
4# for next
>>> for x in range(5):
>>> print(next(f))
0
1
2
3
4
———————————————————————————————————————————————————————————"""
异常处理
"""try:子代码块except (异常类型A, 异常类型B, 异常类型C)子代码块except 异常类型2 as 别名子代码块except 异常类型3 as bbb # bbb 拿到的是捕获异常所拿到的提示信息子代码块except 异常类型4 as eee子代码块except Exception as 别名:它是最后的防线,可以捕捉所有的异常!但它根据需求,可写也可不写else:子代码块: 会在try的子代码块没有异常的时候执行finally:子代码块无论如何都执行"""