流程控制
一、可变不可变类型
可变类型:值改变,id不变,证明改的是原值,证明原值是可以被改变的
不可变类型:值改变,id也改变,证明是产生了新的值,并没有改变原值,证明原值是不可以被修改的
验证
# int是不可变类型 x=10 print(id(x)) # 140736198662080 x=11 print(id(x)) # 140736198662112 # float是不可变类型 x=2.1 print(id(x)) # 2106767272624 x=3.2 print(id(x)) # 2106767272336 # str是不可变类型 x='abc' print(id(x)) # 1644325942576 x='qqq' print(id(x)) # 1644326369200 # 小结:int、float、str都被设计成了不可分割的整体,不能够被改变 # list是不可变类型 l=[11, 22, 33] print(id(l)) # 3199870035008 l[0]='AAA' print(id(l)) # 3199870035008 # 布尔类型是不可变类型 # 字典是不可变类型 x={'k1':111, 'k2':222} print(id(x)) # 3199870035008 x['k1']=333 print(id(x)) # 3199870035008 ''' 关于字典补充: 定义:{}内用逗号分隔多key:value, 其中value可以是任意类型 但是key必须是不可变类型 '''
二、条件
什么是条件
- 条件就是为了达成某种状况而所要具备的机制
为什么要用条件
- 为了能够让计算机具备人的这种判断事物是否能够成立的机制
条件有那些
显示布尔值:
可以是比较运算符
age = 18 print(age > 16) # 条件判断之后会得到一个布尔值
可以是True、False
tag = True print(tag)
隐式布尔值:所有的值都可以当成条件去用
其中0、None、空(空字符串、空列表、空字典等)代表的布尔值为False,其余的均为True
print(bool(0)) # False print(bool(None)) # False print(bool('')) # False print(bool([])) # False print(bool({})) # False
三、分支结构
什么是分支结构
- 分支结构就是根据条件判断的真假去执行不同分支对应的子代码
为什么要用分支结构
- 人类某些时候需要根据条件来决定做什么事情,程序中也必须有相应的机制来控制计算机具备这种判断能力
如何使用分支结构
if语法
if 条件1: 代码块1 elif 条件2: 代码块2 ... else: 代码块3
注意:
- (1)、python用相同缩进(4个空格表示一个缩进)来标识一组代码块,同一组代码会自上而下依次运行
- (2)、条件可以是任意表达式,但执行结果必须为布尔类型
- (3)、None、0、空三种情况下转换成的布尔值为
False
,其余的均为True
if应用案例
案例1:
# 如果:女人的年龄>30岁,那么:叫阿姨 age = 60 if age > 30: print('阿姨')
案例2:
# 如果:女人的年龄>30岁,那么:叫阿姨,否则:叫小姐 age = 60 if age > 30: print('阿姨') else: print('小姐姐')
案例3:
# 如果:女人的年龄>=18并且<22岁并且身高>170并且体重<100并且是漂亮的,那么:表白,否则:叫阿姨 age = 18 height = 163 weight = 85 beautiful = True if age >= 18 and age < 22 and height > 170 and weight < 100 and beautiful: print('表白') else: print('阿姨')
案例4:
''' 如果:成绩>=90,那么:优秀 如果成绩>=80且<90,那么:良好 如果成绩>=70且<80,那么:普通 其他情况:很差 ''' score = 100 if score >= 90: print('优秀') elif score >= 80: print('良好') elif score >= 70: print('普通') else: print('不及格')
案例5:
# if嵌套 #在表白的基础上继续: #如果表白成功,那么:在一起 #否则:打印。。。 age = 18 height = 163 weight = 85 beautiful = True if age >= 18 and age < 22 and height > 170 and weight < 100 and beautiful: print('表白') respon = True if respon: print('在一起') else: print('打印') else: print('阿姨')
四、循环结构——while循环
什么是循环结构
- 循环结构就是重复执行某段代码块
为什么要用循环结构
- 让计算机能够具备人重复执行某件事情的能力
如何使用循环结构
while循环语法
while 条件: 代码1 代码2 代码3 ''' while的运行步骤: 步骤1:如果条件为真,则自上而下的执行代码1、2、3... 步骤2:执行完最后一条代码时再次判断条件,如果条件为Treu则重复步骤1,如果条件为False,则结束循环 '''
while循环以应用案例
案例1:while循环的基本使用
# 用户认证程序 # 为了避免代码的重复,所以引入while循环
案例2:while+break的使用
- 注意:break用来结束本层循环,break后面的代码都不会执行
#
案例3:while循环嵌套+break
案例4:while循环嵌套+tag的使用
案例5:while+continue的使用
- 注意:continue用来跳出当前次循环(即跳过本次循环直接进入下一次循环),continue后的代码也不会执行
案例6:while+else的使用
- 注意:如果while循环被break终止了,则不会运行else里的代码
while循环练习
练习1:寻找1到100之间数字7最大的倍数(结果是98)
练习2:猜年龄
五、for循环
for循环语法
for 变量名 in 可迭代对象(字符串、列表、字典): 代码1 代码2 ... #例1 for item in ['a','b','c']: print(item) # 运行结果 a b c # 参照例1来介绍for循环的运行步骤 # 步骤1:从列表['a','b','c']中读出第一个值赋值给item(item=‘a’),然后执行循环体代码 # 步骤2:从列表['a','b','c']中读出第二个值赋值给item(item=‘b’),然后执行循环体代码 # 步骤3: 重复以上过程直到列表中的值读尽
for循环应用案例
案例1:打印数字0-5
案例2:遍历字典
案例3:for循环嵌套
for循环练习
练习1:打印九九乘法表
for i in range(1, 10): for j in range(1, i+1): print('{i} * {j} = {z} '.format(i=i, j=j, z=i*j), end=' ') print()
练习2:打印金字塔
for line in range(0, 5): for space in range(1, 5-line): print(' ', end='') for star in range(0, 2*line+1): print('*', end='') print('')