文章目录
学习笔记(2024.08.04)
一、for循环结构、遍历各种和range对象
1. for循环和可迭代对象遍历
2.可迭代对象
(1)序列。包含:字符申、列表、元组
(2) 字典
(3) 迭代骼对象(iterator)
(4) 生成器函数(generator)
(5) 文件对象
3. range对象
操作:利用for循环,计算1-100之间数字的累加和;计算1-100 之间偶数的累加和,计算 1-100之间奇数的累加和。
二、嵌套循环
一个循环体内可以嵌入另一个循环,一般称为“嵌套循环”,或者“多重循环”•
例一:操作:打印如下图案
例二:操作:利用嵌套循环打印九九乘法表
例三:操作:用列表和字典存储下表信息,并打印出表中工资高于 15000的数据
三、break语句、continue语句和else语句
1.break语句
break 语句可用于 while 和 for 循环,用来结束整个循环。当有嵌套循环时,break 语句只能跳出最近一层的循环。
操作:使用break语句结束循环
2. continue语句
操作:要求输入员工的薪资,若薪资小于0则重新输入。最后打印出录入员工的数量和薪资明细,以及平均薪资。
3. else语句
操作:员工一共4人。录入这4位员工的薪资。全部录入后,打印提示“您已经全部录,入4名员工的薪资”。最后,打印输出录入的薪资和平均薪资。
四、循环代码优化技巧
虽然计算机越来越快,空间也越来越大,我们仍然要在性能问题上“斤斤计较”。编写循环时,遵守下面三个原则可以大大提高运行效率,避免不必要的低效计算:
1. 尽量減少循环内部不必要的计算
2. 嵌套循环中,尽量减少内层循环的计算,尽可能向外提
3. 局部变量查询较快,尽量使用局部变量
4. 连接多个字符串,使用join()而不使用+
5. 列表进行元素插入和删除,尽量在列表尾部操作
# 初始化一个空列表
result = []
# 向列表尾部插入元素
result.append(1)
result.append(2)
result.append(3)
print(result) # 输出: [1, 2, 3]
# 初始化一个列表
result = [1, 2, 3, 4, 5]
# 从列表尾部删除元素
result.pop()
result.pop()
print(result) # 输出: [1, 2, 3]
五、使用zip()并行迭代
我们可以通过 zipO函数对多个序列进行并行迭代,zipO函数在最短序列“用完”时就会停止。
六、推导式创建序列、列表推导式、字典推导式、集合推导式和生成器推导式
1. 推导式创建序列
推导式是从一个或者多个选代留快速创建序列的一种方法。它可以将循环和条件判断结合,从而避免冗长的代码。推导式是典型的 Python 风格,会使用它代表你已经超过 Python 初学者的水平。
2. 列表推导式
3. 字典推导式
4.集合推导式
5.生成器推导式(生成元组)
七、综合练习
练习一:绘制不同颜色的多个同心圆
import turtle
t = turtle.Pen()
my_colors = ("red", "green", "yellow", "black")
t.width(4)
t.speed(0)
for i in range(30):
t.penup()
t.goto(0, -i*10)
t.pendown()
t.color(my_colors[i % len(my_colors)])
t.circle(15+i*10)
turtle.done() # 程序执行完,窗口仍然在
作业:绘制一个18*18的棋盘格
import turtle
t = turtle.Pen()
width = 30
num = 18
# 定义横线的起点和终点坐标
x1 = [(-400, 400), (-400+width*num, 400)]
# 定义竖线的起点和终点坐标
y1 = [(-400, 400), (-400, 400-width*num)]
# 设置画笔速度
t.speed(0)
# 绘制横线
for i in range(19):
t.penup()
t.goto(x1[0][0], x1[0][1] - width * i)
t.pendown()
t.goto(x1[1][0], x1[1][1] - width * i)
# 绘制竖线
for i in range(19):
t.penup()
t.goto(y1[0][0] + width * i, y1[0][1])
t.pendown()
t.goto(y1[1][0] + width * i, y1[1][1])
# 完成绘图
turtle.done()