9/27内容概要

693 阅读4分钟

垃圾回收机制

有一些语言 内存空间的申请和释放都需要程序员自己希望代码才可以完成但是python却不需要 通过垃圾回收机制自动管理

* 引用计数
name='jason'    数据值jason身上的引用计数为1
name1=name      数据值jason身上的引用计数加12
del name1       数据值jason身上的引用技术减1  为1
当数据值身上的引用计数为0的时候  就会被垃圾机制当作垃圾回收掉
当数据值身上的引用计数不为0的时候 永远不会被垃圾回收机制回收

* 标记清除
  主要针对循环引用问题
  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  断开变量名了与列表的绑定关系  引用计数为1
  del l2  断开变量名l2与列表的绑定关系  引用计数为1

  当内存占用达到临界值的时候 程序会自动停止  然后扫描程序中所有的数据并给只产生循环引用的数据打上标记  之后一次性清除
  
  
* 分代回收
 垃圾回收机制的频繁运行也会损耗各项资源
 新生代 青春代 老年代 (越往下检测频率越低)
 
 
 

流程控制理论

流程控制>>>:控制事物的执行流程
事物执行流程总共可以分为三种
1.顺序结构:从上往下依次执行 我们之前所编写的代码都属于该结构

image.png

2.分支结构:事物的执行会根据条件的不同做出不同的执行策略

image.png

3.循环结构:事物的执行会根据某个条件出现重复

image.png

在代码的世界里 很多时候可能会出现三者混合
作为小白 在学习流程控制的时候 建议做到代码和图形的结合

流程控制必备知识

  • python中使用代码的缩进表示代码的从属关系 从属关系: 缩进的子代码是否执行取决于上面没有缩进的
  • 并不是所有的代码都可以拥有缩进的子代码 看到if关键字
  • 如果有多行子代码属于同一个父代码 那么这些子代码需要保证相同的缩进量
  • python中针对缩进量没有具体的要求 但是推荐使用四个空格(windows中tab键)
  • 当某一行代码需要编写子代码的时候 那么这一行代码的结尾肯定需要冒号
  • 相同缩进量的代码彼此之间平起平坐 按照顺序结构依次执行

分支结构

* 单if分支结构
  if 条件:条件成立后才会执行的代码块  
  username = input('username>>>:')
         if username == 'jason':
             print('老师好')
         

1664279917731.png

* if...else..分支结构
if条件:
      条件成立之后执行的子代码
else:
     条件不成立执行的子代码
 username = input('username>>>:')
    if username == 'jason':
        print('老师好')
    else:
        print('去你妹的')
        

1664264751123.png

* if...elif...else
 if 条件1:
       条件1成立之后执行的子代码
        elif 条件2:
       条件1不成立 条件2成立执行的子代码
        elif 条件3:
       条件12都不成立 条件3成立执行的子代码
        else:
       上述条件都不成立 执行的子代码
        ps:中间的elif可以写多个、上述子代码永远只会走一个
         score = input('请输入学生成绩>>>:')
    score = int(score)  将字符串的整数转换成整型的整数
    if score >= 90:
        print('优秀')
    elif score >= 80:
        print('良好')
    elif score >= 70:
        print('一般')
    elif score >= 60:
        print('及格')
    else:
        print('挂科 交钱重修') 

1664264695226.png

* if的嵌套使用
 age = 28
    height = 170
    weight = 110
    is_beautiful = True
    is_success = False
    username = 'tony'
    if username == 'tony':
        print('tony发现目标')
        if age < 30 and height > 160 and weight < 150 and is_beautiful:
            print('大妹纸 手机掏出来 让我加微信')
            if is_success:
                print('吃饭 看电影 天黑了...')
            else:
                print('去你妹的 流氓!!!')
        else:
            print('不好意思 认错人了')
    else:
        print('不是tony做不出来这件事')
    
    

image.png

循环结构

* 就是想要一些代码反复的执行
while 条件:
  条件成立之后执行的子代码(循环体代码)
1.先判断条件是否成立
2.如果成立则执行循环体代码
3.循环体代码执行完毕后再次回到条件判断处 判断条件是否成立
4.如果成立 则继续执行循环体代码
5.按照上述规律依次执行 直到条件不成立才会结束循环体代码的执行

image.png

image.png

break  强行结束循环
  while循环体代码一旦执行到break会直接结束循环
continue  直接跳到条件判断处
  while循环体代码一旦执行到continue会结束本次循环 开始下一次循环

 while 条件: 
     循环体代码
 else:
     循环体代码没有被强制结束的情况下  执行完毕就会执行else子代码.
     
     
1.根据用户输入内容打印其权限
    jason --> 超级管理员
    tom  --> 普通管理员
    jack,rain --> 业务主管
    其他 --> 普通用户



image.png

2.编写用户登录程序
 要求:有用户黑名单 如果用户名在黑名单内 则拒绝登录
    eg:black_user_list = ['jason','kevin','tony']
 如果用户名是黑名单以外的用户则允许登录(判断用户名和密码>>>:自定义)
    eg: oscar 123

image.png

3.编写用户登录程序
 用户如果登录失败 则只能尝试三次
 用户如果登录成功 则直接结束程序

image.png

4.猜年龄的游戏
 假设用户的真实年龄是18 编写一个猜年龄的游戏 获取用户猜测的年龄
 基本要求:可以无限制猜测 每次猜错给出提示(猜大了 猜小了) 猜对则结束程序
 拔高练习:每次猜测只有三次机会 一旦用完则提示用户是否继续尝试 用户通过输入n或者y来表示是否继续尝试 如果是y则继续给用户三次猜测机会 否则结束程序

image.png