流程控制-垃圾回收机制

垃圾回收机制与流程控制

垃圾回收机制

引用计数

数据值身上的引用计数
name = '123'  # 引用计数为1
name1 = name  # 引用计数+1
del name1    #引用计数-1
'''数据值每多绑定一个变量名那么计数+1 ,每del删除一个与相同数据值绑定的变量名 计数-1
当数据值的引用计数为0时,那么会被垃圾回收机制当做垃圾回收掉。'''

标记清除

主要针对循环引用问题
a1 = [6, 2]  # 引用计数为1
a2 = [7, 8]  # 引用计数为1
a1.append(a2)  # a1 = [6, 2, [7, 8]]引用计数为2
a2.append(a1)  # a2 = [7, 8, [6, 2]]引用计数为2
del a1  # 断开变量名a1 与列表的绑定关系后引用计数为1
del a2  # 断开变量名a2 与列表的绑定关系后引用计数为1

分带回收

根据数据值使用的次数来检测,检测数据使用次数越频繁那么监控频率越低

image

流程控制理论

  • 控制事物的执行流程

顺序结构

从上往下执行

image

分支结构

根据条件的不同做出不同的流程

image

循环结构

根据某个条件出现重复

image

流程控制之必备知识

python中使用代码的缩进来表示此代码是否是子代码。
不是所有的代码都可以用子代码
目前有的: if else
如果有多行子代码同属于一个父代码,那么子代码需要保证相同的缩进值(TAB 子代码快捷键)
"""注意事项
一行代码需要编写子代码的时候那么这一行代码结尾要用冒号:  否则无效  子代码的缩进量一定比父代码多 否则和父代码平起平坐按照顺序执行"""

分支结构

单if分支

"""
语法结构
  if 条件:
  条件成立之后执行的子代码(可以有多行)
	"""
# 回家就换拖鞋
a = input('你现在想去哪>>>:"')
if str == '回家':
  print(换拖鞋)

image

if...else...分支结构

"""语法结构
   if 条件:
    条件成立后执行的子代码
   else:
    条件不成立后执行的子代码"""
a = input('你现在想去哪>>>:"')
if str == '回家':
	print('换拖鞋')
else:
	print('不去上网吗?')

image

if...elif...else分支结构

"""语法结构
   if 条件1:
   条件1成立之后执行的子代码
   elif 条件2:
   条件1不成立,条件2成立之后执行的子代码
   else:
   条件都不成立的情况下执行的子代码
elif可以写多个,子代码达成条件永远只会走一个"""
a = input('你国庆想几号回家?>>> ')
if a == 1:
    print('那挺早啊')
elif a < 3:
    print('没买到一号票吗')
elif a > 3:
    print('那挺迟的')
else:
    print('不回家了啊,那挺可惜的')

image

if嵌套

在if条件中还可以通过缩进的方法在子代码中使用if等分支
# 如果女孩子的年龄大于30说 哇我就喜欢你这年龄的加微信 否则那挺年轻啊
# 如果成功了 则去吃饭 看电影 开车回家车坏了.  否则 那算了吧
is_success = True
age = int(input('美女你今年多大啦'))
if age > 30:
    print('哇我就喜欢你这年龄的,加微信')
    if is_success:
        print('吃饭 看电影 开车回家车坏了')
    else:
        print('那算了')
else:
    print('那挺年轻啊')

image
image

循环结构

while

让一些代码反复的执行
'''语法结构
while 条件:
    条件成立后执行的循环体代码
判断条件是否成立,如果成立的话执行循环体代码,.循环体代码执行完毕后 再次判断条件是否成立 如果成立则继续执行循环体代码 如果不成立则跳出循环'''
while True:
    print('你好')  # True成立则一直循环输出 你好
break  # 强制结束循环体
while True:
    print('你好')
    break #强制结束循环体
continue  #直接跳到条件判断处
a = 1
while a < 5:
    a += 1
    if a == 3:
        continue  # 达到3跳回到条件判断处
    else:
     print('你好')
    

image
image

作业:

1.根据用户输入内容打印其权限
    '''
    jason --> 超级管理员
    tom  --> 普通管理员
    jack,rain --> 业务主管
    其他 --> 普通用户
# 获取用户输入                                              
username = input('请输入用户名:')                           
# 判定用户名是否是正确的 超级管理员                                   
if username == 'jason':                               
    print('超级管理员')  # 如果用户名正确那么打印其权限 超级管理员            # 判定用户名是否是正确的普通管理员                                   
elif username == 'tom':                               
    print('普通管理员')  # 如果用户名是正确的那么打印 普通管理员             
# 判定用户名是否是正确的业务主管                                     
elif username == 'jack' or username == 'rain':        
    print('业务主管')  # 如果用户名正确打印业务主管                    
# 输入以上条件都不符合的其他用户那么执行                                
else:                                                 
    print('普通用户')  # 打印普通用户     
    '''

image

2.编写用户登录程序
 要求:有用户黑名单 如果用户名在黑名单内 则拒绝登录
    eg:black_user_list = ['jason','kevin','tony']
 如果用户名是黑名单以外的用户则允许登录(判断用户名和密码>>>:自定义)
    eg: oscar 123
username = input('请输入用户名:')# 获取用户输入
black_user_list = ['jason', 'kevin', 'tony', ]  # 设定黑名单 
if username in black_user_list:  # 判断 username获取输入是否在黑名单里
	print('您已被加入黑名单')
else:  # 如果不是 那么获取用户输入密码:
	pwd = input('请输入密码:')
    if username == 'tank' and pwd == '123':  # 判定 username and pwd 是否输入正确
    	print('登陆成功')
    else:  # 输入错误       
    	print('用户名密码错误')

image

3.编写用户登录程序
 用户如果登录失败 则只能尝试三次
 用户如果登录成功 则直接结束程序
count_num = 1  # 设定一个数值                                       
while True:  # 循环条件成立开始循环
	if count_num == 4:  # 设定数值 等于4时
        print('您只有3次机会')
        break  # 退出循环
   else:  # 次数不等于4时
 		username = input('name:')  # 获取用户名输入
       pwd = input('pwd:')  # 获取密码输入
       if username == '111' and pwd == '1':  # 验证密码用户名密码是否正确
      		print('登陆成功')
          break  # 退出程序
       else:  # 用户名密码输入错误时              
          print('用户名或密码错误')            
          count_num += 1  # 循环次数+1 继续循环w

image

4.猜年龄的游戏
 假设用户的真实年龄是18 编写一个猜年龄的游戏 获取用户猜测的年龄
 基本要求:可以无限制猜测 每次猜错给出提示(猜大了 猜小了) 猜对则结束程序
 拔高练习:每次猜测只有三次机会 一旦用完则提示用户是否继续尝试 用户通过输入n或者y来表示是否继续尝试 如果是y则继续给用户三次猜测机会 否则结束程序
 # 先定义用户年龄18                                                                                  
# real_age = 18                                                                              
# count_num = 1  计数器为1                                                                       
# while True:                                                                                
#     if count_num == 4:  # 当计数器 等于4 时                                                       
#         choice = input('只有三次机会啦,输入Y/N继续')  # 选择 赋值 获取用户输入y/n                               
#         if choice == 'y':  # 如果choice 等于 y 时                                               
#             count_num = 1  # 计数器重置为 1                                                      
#         else:                                                                              
#             print('下次再来玩')  # 输入值不是y时,打印下次再来玩,结束程序                                         
#             break                                                                          
#     gusse_age = input('你猜我多大啦')   # 获取用户猜的年龄                                               
#     if gusse_age > '18':  # 判断猜大于18时                                                       
#         print('猜大了')                                                                       
#         count_num += 1  # count_num次数+1                                                    
#     elif gusse_age < '18':  # 判断猜小于18时                                                     
#         print('猜小了')                                                                       
#         count_num += 1  # count_num次数+1                                                    
#     else:                                                                                  
#         print('答对了')                                                                       
#         break                                                                              

image

posted @ 2022-09-27 21:01  李阿鸡  阅读(47)  评论(0编辑  收藏  举报
Title