Skip to content

Latest commit

 

History

History
129 lines (105 loc) · 3.66 KB

187-259389-循环总结.sy.md

File metadata and controls

129 lines (105 loc) · 3.66 KB
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)
    • 循环可以嵌套
      • 二重
      • 多重
  • 容器可以有各种推导式
    • 列表推导式
    • 集合推导式
    • 字典推导式
  • 我们 这次来研究 什么 呢?
  • 那什么是函数呢?
  • 下次再说 👋