show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上次研究了字典推导式
- 字典推导式本质上是集合推导式
- 因为字典本质上是 key-value 的集合
- 可以像列表推导式一样生成集合推导式
- 可以用冒号(:)生成 key-value 对的集合推导式就是字典推导式
- 这次我们来总结一下循环的概念
- 任何一个复杂的系统都是由三种基本结构组成
- 顺序结构
- 分支结构
- 循环结构
- 顺序结构最简单,程序从上到下依次执行,就如同生活中一条笔直的大马路,一路畅行无阻;
- 分支结构是指当程序执行到某步时,需根据实际情况选择性的执行某部分代码,就如同生活中的十字路口,需要根据具体情况选择走哪条路,每次只能选择一条路,不可能同时走多条路;
- 循环结构是指重复执行某些代码,直到条件不满足为止,就如同生活中的盘山公路,一圈圈绕行,直到到达目的地为止。
- 我们其实是从 while 语句开始的
- 从死循环
- 到循环条件
- 从 break 跳出到 continue 继续
- 还有不执行循环时执行的 else
- 然后进入 for 循环
- 循环可迭代对象
- 线性的(元组/列表/字符串/二进制序列)
- 集合类
- 映射类(字典)
- 各种辅助数据类型
- 缝合器 zip
- 编号 enumerate
- 二重甚至多重循环
- 三种推导式
- 列表
- 集合
- 字典
- 推导式其实可以转化为不加糖的一般形式
print('\n'.join([''.join([('IloveU'[(x-y)%len('IloveU')]if((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3<=0 else' ')for x in range(-30,30)])for y in range(15,-15,-1)]))
- 这例子如果转化为普通的循环的形式什么样呢?
import time
sentence = "Dear, I love you forever!"
for char in sentence.split():
allChar = []
for y in range(12, -12, -1):
lst = []
lst_con = ''
for x in range(-30, 30):
formula = ((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3
if formula <= 0:
lst_con += char[(x) % len(char)]
else:
lst_con += ' '
lst.append(lst_con)
allChar += lst
print('\n'.join(allChar))
time.sleep(1)
- 这里面的 for、if 包括 while 其实都属于复合语句
- compand statements
- 这复合语句又是什么意思呢?
- if、while 语句是实现传统流程控制的语句
- try 描述了异常,并给出异常处理方法
- with 语句描述了一系列语句的初始条件和结束时要释放的资源
- 复合语句包括一系列的子句
- 每一个子句头都是一个唯一的关键字
- 结尾都是冒号
- 子句里面有好多语句
- 整个复合语句可以被看做一个整体
- 大括号 - 集合推导式、字典推导式
- 中括号 - 列表推导式
- 小括号 - ?
- 小括号可以得到一个生成器函数
- 这一章 我们
- 深入学习了 循环
- 循环语句 有
两
种- while
- for
- for可以
遍历
各种可迭代对象 - 容器类(list,tuple,set)
- for可以
- 循环可以嵌套
- 二重
- 多重
- 容器可以有各种推导式
- 列表推导式
- 集合推导式
- 字典推导式
- 我们 这次来研究
什么
呢? - 那什么是函数呢?
- 下次再说 👋