目录:第四章 控制语句+推导式
051 PyCharm
052-055 选择结构
通过判断条件是否成立决定执行分支,选择结构的多种形式:单分支、双分支、多分支。
单分支选择结构
- 语法结构:
if 条件表达式:
(缩进)语句/语句块(缩进对齐一致) - 条件表达式详解
False的情况:False、0、0.0、空值None、空序列对象(空列表、空元组、空字典、空字符串)、空range对象、空迭代对象
其余情况均为Ture。
if “False”: #非空字符串,则输出为Ture - 条件表达式中,不能存在赋值操作符=
双分支选择结构与三元运算符
- 双分支语法结构
if 条件表达式:
语句1/语块1
else:
语句2/语块2
- 三元运算符(简单双分支赋值可使用)
语法结构:条件为真时的值 if 条件表达式 else 条件为假时的值
多分支选择结构
- 多分支语法结构
if 条件表达式1:
语句1/语块1
elif 条件表达式2:
语句2/语块2
...
else:
语句n/语块n
若每个分支使用完整独立的判断,则可以随意移动不影响使用。若分支之间具有逻辑关系,则不能随意颠倒顺序。
选择结构的嵌套
- 选择结构可以嵌套,使用时一定注意控制好不同级别代码块的缩进量,因为缩进量决定了代码的从属关系。
- 语法结构
if 条件表达式1:
语句/块1
if 条件表达式2:
语句/块2
else:
语句/块3
else:
语句/块4
056-053 循环结构
- 循环体中的语句应该包含改变表达式的语句,以循环趋进结束;否则会变成死循环。
while循环结构
- while循环语法格式:
while 条件表达式:
循环体语句
for循环结构
- for循环通畅用于可迭代对象的遍历,语法格式:
for 变量 in 可迭代对象:
循环体语句
- 可迭代对象:序列(字符串、列表、元组)、字典、
- range对象是一个迭代器对象,用来生成指定范围的数字序列。range(start🔚step)
嵌套循环
- 嵌套循环,即无限循环
for x in range(5):
for y in range(5):
print(x,end='\t')
print()
"""
0 0 0 0 0
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
"""
break和continue语句
- break语句:用于while和for循环,用于结束循环,只能跳出最近一层循环。
- continue语句:结束本次循环,继续下一次,应用于最近一层循环。
else语句
- while、for循环可以附带一个else语句(可选),如果while、for循环没有被break语句结束,则会执行执行else子句,否则不执行。
while 条件表达式:
循环体
else:
语句块
for 变量 in 可迭代对象:
循环体
else:
语句块
循环代码的优化
- 遵守以下的原则,可提高运行效率:
1)尽量减少循环内部不必要的计算
2)嵌套循环中,尽量减少内层循环的计算,尽可能向外提
3)局部变量查询比较快,尽量使用局部变量 - 其他优化手段
1)连接多个字符串,使用join()而不使用+
2)列表进行元素插入和删除,尽量在列表尾部操作
064 使用zip()并行迭代
- 使用zip()函数对多个序列进行并行迭代,zip()在最短序列用完就会停止。
names=('terence','serrini','jorcy')
ages=(30,31,32)
jobs=('singer','singer','singer')
for name,age,job in zip(names,ages,jobs):
print("{0}-{1}-{2}".format(name,age,job))
#terence-30-singer
#serrini-31-singer
#jorcy-32-singer
065 推导式
- 推导式是从迭代器快速创建序列的一种方法,可以将循环和条件判断结合,避免冗长的代码。
列表推导式
- 语法:[表达式 for item in 可迭代对象] 或者[表达式 for item in 可迭代对象 if 条件判断]
字典推导式
- 格式:{key——experssion:value_expression for 表达式 in 可迭代对象}
统计文本中字符次数
my_text="just carry on"
char_count={c:my_text.count(c) for c in my_text}
print(char_count)
集合推导式
- 语法:{表达式 for item in 可迭代对象}或者{表达式 for item in 可迭代对象 if 条件判断}
生成器推导式(生成元组)
-生成生成器对象,而不是直接生成元组。 一次生成器只能返回一次,用完数据就被消除。
- 语法:(表达式 for item in 可迭代对象)或者(表达式 for item in 可迭代对象 if 条件判断)
gnt=(x for x in range(4))
#不能直接打印,只能通过print(tuple(gnt))
for x in gnt:
print(x,end=',')
print(tuple(gnt))
练习:绘制同心圆
import turtle
t=turtle.Pen()
for x in range(5):
t.penup()
t.goto(0,-i*10)
t.pendown()
t.circle(-i*10)
turtle.done() #窗口执行完,窗口仍然在