Python——程序的组织结构(顺序、选择、循环)以及Python重要语句
Python程序的组织结构
Python——程序的组织结构
顺序结构
即整体代码是按照从上至下,从左至右的顺序执行的
选择结构
对象的布尔值
布尔值即Ture 或者 False
每一个对象都有一个布尔值,使用内置函数bool()来获取该值
Python中的条件表达式就是通过判断对象的布尔值来确定下一步的代码执行流程的
- 布尔值为False的对象
- False
- 整数0、浮点数0.0、复数0j
- 空值None
- 空字符串、空列表、空元组、空字典、空集合
- 空range对象(一个可迭代对象,且不是迭代器对象)
- 其他空迭代对象
验证
b = bool(False)
print(b)
b = bool(0)
print(b)
b = bool(0.0)
print(b)
b = bool(0j)
print(b)
b = bool(None)
print(b)
b = bool(str())
print(b)
b = bool(list())
print(b)
b = bool(tuple())
print(b)
b = bool(dict())
print(b)
b = bool(set())
print(b)
b = bool(range(1, 0))
print(b)
#输出结果:
"""
False
False
False
False
False
False
False
False
False
False
False
"""
- 布尔值为True的对象
- 除了上面提到的布尔值为False的对象以外的所有对象
举几个例子
b = bool(map(str, []))
print(b)
b = bool(filter(None, []))
print(b)
#输出结果:
"""
True
True
"""
合理利用短路算法,可以避免一些异常的抛出
不合理的代码
num = input()
if num+1 < 10 and isinstance(num, int):
print(123)
else:
print(456)
#输入内容:'A'
#引发异常:can only concatenate str (not "int") to str
改进后的代码
num = input()
if isinstance(num, int) and num+1 < 10:
print(123)
else:
print(456)
#输入内容:'A'
#输出结果:456
条件表达式中不允许使用赋值运算符"="
如果使用赋值运算符"="会抛出异常,这是为了避免误写导致的程序运行错误
b = True
if b = False:
pass
#代码效果:SyntaxError: invalid syntax
选择结构的类型
- 单分支
if True:
print(123)
#输出结果:123
- 双分支
if False:
print(123)
else:
print(456)
#输出结果:456
- 多分支
if False:
print(123)
elif True:
print(456)
else:
print(789)
#输出结果:456
if False:
print(123)
elif False:
print(456)
else:
print(789)
#输出结果:789
- 选择结构的嵌套
if False:
print(123)
elif True:
if False:
print(456)
else:
print(789)
else:
print(101112)
#输出结果:789
循环结构
while语句
n = 0
while n<10:
n+=1
print(n, end = ' ')
#输出结果:1 2 3 4 5 6 7 8 9 10
for-in 语句
for-in语句就是用来进行元素遍历的,即for循环的结束条件就是可迭代对象的所有元素都遍历完毕,for循环的循环次数也是由可迭代对象的元素个数决定的(Python for循环的运行过程详见Python——迭代器)
- for循环遍历
in后面的对象表示被遍历的对象,必须为一个可迭代对象,for-in语句会依次取出遍历对象中的每一个数据,并赋值给循环变量
for i in range(1, 11):
print(i, end = ' ')
#输出结果:1 2 3 4 5 6 7 8 9 10
- 匿名循环变量
在使用for循环遍历的时候,也可以使用匿名循环变量"_"
一般使用匿名循环变量的时候,都是在不需要使用遍历得到的数据的情况下,即"_"仅仅就是为了保证for循环语法正确,可以遍历相应次数而存在的
for _ in range(1, 11):
print(1, end = ' ')
#输出结果:1 1 1 1 1 1 1 1 1 1
当然,也可以使用匿名循环变量"_"得到数据
for _ in range(1, 11):
print(_, end = ' ')
#输出结果:1 2 3 4 5 6 7 8 9 10
- for循环语句的特点
for循环语句是按照元素的下标进行取数,并不会因为在循环过程中添加元素或者删除元素而所影响,同时由于对列表进行增删元素之后,其他元素会进行移动(即其他元素的下标会发生变化)
所以如果一边遍历,一边原地移除元素,可能会导致一些意料之外的事情
data = [1,1,1,2,1,2,1,1]
for num in data:
if num ==1:
data.remove(num)
print(data)
#输出结果:
"""
[1, 1, 2, 1, 2, 1, 1]
[1, 2, 1, 2, 1, 1]
[2, 1, 2, 1, 1]
[2, 2, 1, 1]
"""
运行结果分析:
-
第一次执行remove方法:对于[1,1,1,2,1,2,1,1],检测下标为0的元素,元素值为1,符合条件,调用remove函数删除第一个元素
-
第二次执行remove方法:对于[1,1,2,1,2,1,1],检测下标为1的元素,元素值为1,符合条件,调用remove函数删除第一个元素
-
第三次执行remove方法:对于[1,2,1,2,1,1],检测下标为2的元素,元素为1,符合条件,调用remove函数删除第一个元素
-
第四次执行remove方法:对于[2,1,2,1,1],检测下标为3的元素,元素值为1,符合条件,调用remove函数删除第一个元素
-
对于[2,2,1,1],没有下标为4的元素,于是结束循环
-
for循环的解包功能
data = [(1, 2), (3, 4)]
for data1, data2 in data:
print(data1, data2)
#输出结果:
"""
1 2
3 4
"""
break 和continue
break语句用于直接结束整个循环,continue语句用于提前结束本次循环
关键字break 和continue只能用于循环结构中,不能在循环结构之外使用
for循环
for i in range(1, 11):
if i == 5:
continue
if i == 7:
break
print(i, end = ' ')
#输出结果:1 2 3 4 6
while循环
n = 0
while n<10:
n+=1
if n == 5:
continue
if n == 7:
break
print(n, end = ' ')
#输出结果:1 2 3 4 6
else语句与循环结构
如果在于处于并列位置(即缩进相同)的整个循环过程中没有执行break(内层循环执行break不考虑),则在循环结束以后,else语句会执行,反之,不执行else语句
简单来说,就是如果循环正常结束,就会执行else语句
即使在循环过程中通过continue加快了循环结束的速度,如果是因为正常因为for遍历完毕/while条件不满足而结束,依旧执行else语句
for循环正常结束
for _ in range(1, 11):
pass
else:
print("循环正常结束")
#输出结果:循环正常结束
while循环正常结束
n = 0
while n<10:
n+=1
else:
print("循环正常结束")
#输出结果:循环正常结束
for循环中途结束
for i in range(1, 11):
if i == 5:
break
else:
print("循环正常结束")
#代码效果:无任何输出
while循环中途结束
n = 0
while n<10:
n+=1
if n == 5:
break
else:
print("循环正常结束")
#代码效果:无任何输出