python中的流程控制
垃圾回收机制
1.什么是垃圾回收机制呢?
python语言中独有的垃圾回收机制,会自动智能的优化储存空间
把没有作用的数据值删除,清除占用的内存空间。
2.引用计数
通过数据被引用的次数而判断数据值是否有效,是否需要保存空间
name = 'moon' # 此时name这个变量名赋予了moon,数据值moon被引用了一次
name1 = name # 此时name1这个变量名再次引用了数据值moon 被引用次数为 2
del name1 数据值moon身上的引用计数减一 为1
当数据值身上的引用计数为0的时候 才会被垃圾回收机制当做垃圾回收掉 默认为已经不需要此数据。
3.标记清除
主要针对循环引用问题
l1 = [11, 22] # 引用计数为1
l2 = [33, 44] # 引用计数为1
l1.append(l2) # l1 = [11, 22, l2列表] 引用计数为2
l2.append(l1) # l2 = [33, 44, l1列表] 引用计数为2
del l1 # 断开变量名l1与列表的绑定关系 引用计数为1
del l2 # 断开变量名l2与列表的绑定关系 引用计数为1
当内存占用达到临界值的时候 程序会自动停止 然后扫描程序中所有的数据
并给只产生循环引用的数据打上标记 之后一次性清除
4.分代回收
垃圾回收机制的频繁运行也会损耗各项资源
垃圾回收机制会通过数据值被引用使用的次数来判断重要程度
使用的次数越多,被检测的频率越低。
放心:只要数据值有用,哪怕只被引用了一次,也不会被垃圾回收哦
只是讲解一下python里面自带的垃圾回收系统的工作原理机制。
流程控制理论说明
流程控制>>>:控制事物的执行流程
事物执行流程总共可以分为三种
1.顺序结构
从上往下依次执行 一条路走到底。按照顺序进行
2.分支结构
事物的执行会根据不同的条件,进行不同的选择操作
3.循环结构
事物会一直重复执行,直到达到某种条件才会停止。
ps:在代码的世界里 很多时候可能会出现三者混合
提示:作为小白 在学习流程控制的时候 建议做到代码和图形的结合
分支结构
1.分支结构 关键词 if
if 条件:
条件成立则进入if代码块执行。
#代码展示:
ice_cream = 2
if ice_cream < 3: # if 分支结构,判断条件为 冰激凌价格小于3 判断条件成立则会进入if下代码块输出 '买了吃'
print('买了吃')
2.if...else...分支结构
if 条件:
条件成立之后执行的子代码
else:
条件不成立执行的子代码
#代码展示:
ice_cream = 5
if ice_cream < 3: # if 分支结构,判断条件为 冰激凌价格小于3 这里判断条件不成立,5大于3 所以这里if里面的子代码不运行
print('买了吃')
else: # if条件不满足,则运行 else 下面的子代码
print('太贵了吃不起') # 正常运行 ‘太贵了吃不起’
3.if...elif...else分支结构 #可以设置多个判断条件 依次判断
if 条件1:
条件1成立之后执行的子代码
elif 条件2:
条件1不成立 条件2成立执行的子代码
elif 条件3:
条件1和2都不成立 条件3成立执行的子代码
else:
上述条件都不成立 执行的子代码
ice_cream = 6
if ice_cream < 2: # 第一个判断 价格小于2 不符合,代码按照顺序接着进行
print('买两个')
elif ice_cream < 5: # 第二个判断 价格小于5 不符合,代码按照顺序接着进行
print('买一个把')
elif ice_cream < 10: # 第三个判断 价格小于10 符合,成功执行子代码 ‘狠狠心卖一个’
print('狠狠心买一个')
else:
print('太贵了不吃了') # 以上if elif 判断都不符合时 才执行else 。 当价格大于10时 会执行子代码
4.if的嵌套使用(有点难)
if语句下面还可以再次进行新的if判断
temperature = 32
money = 5
ice_cream = 6
if temperature > 30: # 第一个 判断条件 天气大于30度 成立 运行子代码
print('天气好热,去购买') #成功运行
if money > 1: # 还是属于第一个判断条件中的子代码,所以依序运行,判断 钱 大于1 成立 运行子代码
print('口袋有钱') # 成功运行
if ice_cream < 5: # 附属关系上面判断成功就依序运行,判断 雪糕 小于5 不成立 不在运行
print('真好吃')
else: # 同一等级中,判断失败 所以运行 此代码
print('买不起') #成功运行
else: # 因为同一等级中 条件成立 所以此代码不运行
print('没钱吃不了')
else: # 因为同一等级中 条件成立 所以此代码不运行
print('不热不买了')
看大图,细细品味
循环结构
1.什么是循环结构:
就是让某些程序在条件内,一直反复执行
2.代码结构:
while 条件: # while 语句 后面 跟上 条件 以 :号结尾
3.运行逻辑:
1.先判断条件是否成立
2.如果成立则执行循环体代码
3.循环体代码执行完毕后再次回到条件判断处 判断条件是否成立
4.如果成立 则继续执行循环体代码
5.按照上述规律依次执行 直到条件不成立才会结束循环体代码的执行
4.代码展示:
money = 1
while money < 5 : # 开始进入循环,循环条件为 钱小于5 只要满足此条件便重复运行子代码
print('钱不够去要钱')
money += 1
print('钱够了去买冰激凌') # 循环结束,钱大于5了 依次执行此代码
循环结构之break
用户强行终止循环
while循环体代码一旦执行到break会直接结束循环
代码展示:
money = 1
while money < 10 : # 开始进入循环,条件:钱小于10的时候 都需要循环
print('钱不够去要钱')
money += 1
if money == 4 : # 设置条件,当钱 等于 4时 执行子代码
print('不吃了')
break # 跳出循环,关闭循环
循环结构之continue
用户强行终止循环
while循环体代码一旦执行到continue会跳过本次循环
代码展示:
money = 1
while money < 6 : # 进入循环执行。设置条件 钱 小于6
if money == 4 : # 钱等于4元才进去此代码块 不等于4 则不执行if代码块
money += 1
continue # continue 跳过等于4的这个
print(money)
money += 1
代码执行结果:
1
2
3
5
小练习
#1.根据用户输入内容打印其权限
'''
jason --> 超级管理员
tom --> 普通管理员
jack,rain --> 业务主管
其他 --> 普通用户
'''
答:
power = input('请输入姓名')
if power == 'jason':
print('超级管理员')
elif power == 'tom':
print('普通管理员')
elif power == 'jack,rain':
print('业务主管')
else:
print('普通用户')
# 2.编写用户登录程序
# 要求:有用户黑名单 如果用户名在黑名单内 则拒绝登录
# eg:black_user_list = ['jason','kevin','tony']
# 如果用户名是黑名单以外的用户则允许登录(判断用户名和密码>>>:自定义)
# eg: oscar 123
black_user_list = ['jason','kevin','tony']
username = input('请输入用户名')
if username == 'jason' or username == 'kevin' or username == 'tony':
print('黑名单拒绝登录')
elif username == 'oscar':
passwold =input('请输入密码')
if passwold == '123':
print('登录成功')
else:
print('密码错误')
else:
print('账号错误,请注册')
#3.编写用户登录程序
#用户如果登录失败 则只能尝试三次
#用户如果登录成功 则直接结束程序
time = 3
while time > 0:
name = input('请输入用户名')
passwold = input('请输入密码')
if name == 'moon' and passwold == '123':
print('登录成功')
break
else:
print('登录失败用户名或密码错误')
time -= 1
if time == 0 :
print('您已经失败了3次,账户锁定')
# 4.猜年龄的游戏
# 假设用户的真实年龄是18 编写一个猜年龄的游戏 获取用户猜测的年龄
# 基本要求:可以无限制猜测 每次猜错给出提示(猜大了 猜小了) 猜对则结束程序
# 拔高练习:每次猜测只有三次机会 一旦用完则提示用户是否继续尝试 用户通过输入n或者y来表示是否继续尝试 如果是y则继续给用户三次猜测机会 否则结束程序
time = 3
while time > 0:
age = input('请猜一个年龄')
age = int(age)
if age == 18:
print('恭喜您猜对了')
break
elif age > 18:
print('猜大了')
else:
print('猜小了')
time -= 1
print('您还有%s次机会' % time)
标签:控制,python,money,流程,else,条件,print,执行,代码
From: https://www.cnblogs.com/moongodnnn/p/16736187.html