Error in user YAML: (<unknown>): could not find expected ':' while scanning a simple key at line 3 column 1
---
- oeasy Python 0188
- 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。
本教程同步发布在:
个人网站: `https://oeasy.org`
蓝桥云课: `https://www.lanqiao.cn/courses/3584`
GitHub: `https://github.com/overmind1980/oeasy-python-tutorial`
Gitee: `https://gitee.com/overmind1980/oeasypython`
---- 上次研究了 enumerate()
- enumerate()是个特殊的 zip 函数
- enumerate()把列表和编号缝在一起
- 还可以设置起始值 start
- 几列可迭代对象可以缝合成 zip 对象
- enumerate 可以给缝合好的 zip 对象缝上编号
- 这样可以把 zip 组转化为为有编号的 zip 组
- 遍历过程iterable的过程中还可以
- 增删改iterable
- 可迭代的可迭代对象
- 就是列表的嵌套
- 得到个二维列表
- 如何遍历二维列表呢??🤔
- 首先得有一个二维列表
- 我们用了一个 for 循环遍历了这个数组
- 但是这个数组是一个二维数组啊
- 我可以来一个二重循环么?
- 这就是一个二重循环
- 循环两次
- 通过缩进可以看出到底语句属于那一重循环
- 这个行内的格式可以控制得好一点吗?
- 二重循环的缩进很重要
- 可以看出语句属于哪一重
- 不过这种\b的方法其实不太好理解
- 能否变成好理解的方式?
- 通过元素序号的方式
- 能知道当前元素是列表中的第几个元素
- 如果是列表中最后一个话
- 就需要特殊处理
- 可是最后一行还有点问题,怎么处理呢?
- 这样的方式不是拼拼补补
- 而是用python的语句、列表的语法进行逻辑思考
- 然后写出的代码
- thinking in python!
l = [[1, 2],[3, 4]]
print("[")
for i in range(len(l)):
print("\t[",end="")
for j in range(len(l[i])):
if j != len(l[i])-1:
print(str(l[i][j])+" ,",end="")
else:
if i != len(l)-1:
print(str(l[i][j])+"],")
else:
print(str(l[i][j])+"]")
print("]")- 我们再来个复杂点的
- d 是一个字典
- 我把字典 d 给遍历了
- 如果我还想把里面的字典项 values 按照自己的方式显示
- 应该怎么办呢?
- 字典项的值是一个字典
- 这就需要二重循环了
- 注意每一重的缩进效果不同
- 列表、元组、字典都是 iterable 的
- 还有什么是 iterable 的呢?
for c in "oeasy":
for i in range(10):
print(c, end="")
print()
- 可以直接输出字符若干次
- 如果 遇到 a 的话 想跳出
- 该怎么办?
for c in "oeasy":
for i in range(10):
if c == "a":
break
print(c, end="")
print()
- 如果是 a 可以结束内层循环
- 但是还是要打印一个换行符
- 我想换行符也不打
- 怎么办?
- 不要在内层想办法
- 跳出循环想办法
- 这有点太猛了
- 直接跳出去
- 其实后面我还想继续
- 只是跳出a对应的轮次
- 结果符合要求
- 但似乎可以优化
- 在输出的时候
- 不用再进行判断了
for c in "oeasy":
if c == "a":
continue
for i in range(10):
print(c, end="")
print()
- 还有什么例子吗?
while True:
numbers = []
while True:
num = input("请输入商品价格(输入end停止输入):")
if num == "end":
break
try:
num = float(num)
numbers.append(num)
except ValueError:
print("输入不合法,请输入有效的浮点数或end。")
total = sum(numbers)
print(f"本次输入的数字总和为:{total}")
- 效果
- 外层的while有意义吗?
- 如果去掉了外层循环
numbers = []
while True:
num = input("请输入商品价格(输入end停止输入):")
if num == "end":
break
try:
num = float(num)
numbers.append(num)
except ValueError:
print("输入不合法,请输入有效的浮点数或end。")
total = sum(numbers)
print(f"本次输入的数字总和为:{total}")
- 结果 一轮就结束了
- 这里面 每次重新 累加之前
- 将 空列表 赋给了 numbers
- 这个能做么?
- 试着自己动手写出来哦!
- 又突然想做一个红绿灯 🚥
- 首先红绿灯各 10 秒
- 都是倒计时的
- 而且要 figlet 变大
- 怎么做?
- 新建 traffic.py
- 先来一个红灯倒数 9 个数字
- 有红灯就得有绿灯
- 照猫画虎就可以
- 然后外层加个死循环
- 让他无限循环起来
- 这其实不难
- 循环外面再套一层
- 就是一个二重循环
- 我想把这个改成一个做操喊号
- 可以么?
- 什么是做操喊号呢?
- 1234
- 2234
- 3234
- 4234
- 问题来了
- 程序怎么改?
- 字体区分
- 不过要想颜色也有区分
- 现在都是 41 红的
- 我想在 16,231 之间随机一个颜色
- 来吧
- 想起来就干
- 四个四拍我还是觉得不够
- 最好是八个八拍
- 然后无限循环
- 这是一个三重循环了
- 这次研究了二重循环
- 二重循环其实很简单
- 就是用 for 或者 while 再循环里面
- 再构建一个循环
- 甚至可以做三重甚至更多重的循环
- 我们曾经玩过随机输出混乱颜色
- 现在我们可以输出一些好玩的东西吗?
- 下次再说 👋
- 本文来自 oeasy Python 系统教程。
- 想完整、扎实学 Python,
- 搜索 oeasy 即可。




























