结构的分类: 1、单分支结构;2、双分支结构;3、多分支结构 单分支结构: if 条件表达式: 语句/语句块 例子:
a=input("请输入一个数字:")
if 2<int(a)<5:
print("a在范围之内")
条件表达式的值为False的情况:alse、0、0.0、空值 None、空序列对象(空列表、空元祖、空集合、空字典、空字符串)、空 range 对象、空迭代对象。 True:其他情况
双分支机构: if 条件表达式 : 语句 1/语句块 1 else: 语句 2/语句块 2 例子:
num = input("输入一个数字:")
if int(num)<10:
print(num)
else:
print("数字太大")
三元太监运算符: 条件为真时的值 if (条件表达式) else 条件为假时的值 例子:
num = input("请输入一个数字")
print( num if int(num)<10 else "数字太大")
多分支选择结构: if 条件表达式 1 : 语句 1/语句块 1 elif 条件表达式 2: 语句 2/语句块 2 . . . elif 条件表达式 n : 语句 n/语句块 n [else: 语句 n+1/语句块 n+1 ] 例子:
score = int(input("请输入分数"))
grade = ''
if score<60 :
grade = "不及格"
elif score<80 :
grade = "及格"
elif score<90 :
grade = "良好"
elif score<=100:
grade = "优秀"
print("分数是{0},等级是{1}".format(score,grade))
结构嵌套要点(注意缩进): 选择结构可以嵌套,使用时一定要注意控制好不同级别代码块的缩进量,因为缩进量决定了代码的从属关系。
循环结构: 循环结构用来重复执行一条或多条语句。表达这样的逻辑:如果符合条件,则反复执行循环体里的语句。在每次执行完后都会判断一次条件是否为 True,如果为 True 则重复执行循环体里的语句。 循环体里面的语句至少应该包含改变条件表达式的语句,以使循环趋于结束;否则,就会变成一个死循环。
while循环: while 循环的语法格式如下: while 条件表达式: 循环体语句
for循环和可迭代对象遍历 我们常用的:for i in range(10),遍历10内0~9所有值 or 循环的语法格式如下: for 变量 in 可迭代对象: 循环体语句
哪些是可迭代对象:
- 序列。包含:字符串、列表、元组
- 字典
- 迭代器对象(iterator)
- 生成器函数(generator)
- 文件对象
Break 语句: break 语句可用于 while 和 for 循环,用来结束整个循环。当有嵌套循环时,break 语句只能跳出最近一层的循环。 continue 语句: continue 语句用于结束本次循环,继续下一次。多个循环嵌套时,continue 也是应用于最近的一层循环。 else 语句: while、for 循环可以附带一个 else 语句(可选)。如果 for、while 语句没有被 break 语句结束,则会执行 else 子句,否则不执行。
循环代码优化注意事项,提高效率:
- 尽量减少循环内部不必要的计算
- 嵌套循环中,尽量减少内层循环的计算,尽可能向外提。
- 局部变量查询较快,尽量使用局部变量
- 连接多个字符串,使用 join()而不使用+
- 列表进行元素插入和删除,尽量在列表尾部操作
zip()并行迭代: 可以通过 zip()函数对多个序列进行并行迭代,zip()函数在最短序列“用完”时就会停止。(迭代次数,是以最小长度作为迭代次数) 例子:对元祖进行打包,最小长度为3,所以迭代三次
names = ("高淇","高老二","高老三","高老四")
ages = (18,16,20,25)
jobs = ("老师","程序员","公务员")
for name,age,job in zip(names,ages,jobs):
print("{0}--{1}--{2}".format(name,age,job))
执行结果:
高淇--18--老师
高老二--16--程序员
高老三--20--公务员
推导式: 推导式分:列表推导式、字典推导式、集合推导式、生成器推导式(生成元组) 列表推导式:【】 [表达式 for item in 可迭代对象 ] 或者:[表达式 for item in 可迭代对象 if 条件判断] 字典推导式:{} {key_expression : value_expression for 表达式 in 可迭代对象} 例子:
my_text = ' i love you, i love sxt, i love gaoqi'
char_count = {c:my_text.count(c) for c in my_text}
char_count
结果:{' ': 9, 'i': 4, 'l': 3, 'o': 5, 'v': 3, 'e': 3, 'y': 1, 'u': 1, ',': 2, 's': 1, 'x': 1, 't': 1, 'g': 1, 'a': 1, 'q': 1}
集合推导式: {表达式 for item in 可迭代对象 } 或者:{表达式 for item in 可迭代对象 if 条件判断}
生成器推导式(生成元组): 例子:
(x for x in range(1,100) if x%9==0)
结果:<generator object <genexpr> at 0x0000000002BD3048>
|