首页 > 其他分享 >流程控制

流程控制

时间:2022-09-27 21:46:36浏览次数:50  
标签:count 控制 流程 else 计数 引用 print 代码

一.垃圾回收机制

什么是垃圾回收机制

垃圾回收机制是python自带的一种机制,专门回收没有绑定变量名的垃圾数据,用来释放内存空间

策略一:引用计数

引用计数就是:变量名和数据值关联的次数

    age = 18      #数据值18的引用计数为1
引用计数增加:
    x = age       #数据值18的引用计数为2
    '把age的内存地址给了x,此时age和x都绑定了18 所以18的引用计数为2'
引用计数减少:
    age = 20      #数据值18的引用计数变成1
    '变量名age与数据值18解除绑定,再与20绑定,所以数据值18的引用计数从2变成了1'
    del x         #数据值18的引用计数变成0
    '解除变量名m的绑定关系,所以数据值18没有变量名绑定,引用计数就从1变成了0'

引用计数】:当数据值身上的引用计数为0,就会被垃圾回收机制回收。 不为0则不会被回收

缺陷:引用计数可能会造成循环引用问题

策略二:标记清除

标记清除策略主要是针对引用计数中循环引用问题而出的策略

循环引用:
     l1=[1,2,3]      #l1列表的引用计数为1
     l2=[4,5,6]      #l2列表的引用计数为2
     l1.append(l2)   #在l1列表后追加l2的数据,l2列表的引用计数变为2
     l2.append(l1)   #在l2列表后追加l1的数据, l1列表的引用计数变为2
     del l1          #解除l1变量名与l1列表的绑定关系,l1列表的引用计数变为1
     del l2          #解除l2变量名与l2列表的绑定关系,l2列表的引用计数变为1
 '此时l1列表与l2列表身上的引用计数不为0且没有变量名绑定,则会一直占用内存空间!'

标记清除】:当内存占用达到某个临界值时,将内存中所有数据值检查一遍,对存在循环引用的数据打上标记,之后一次性清除

缺陷:每隔一段时间会对所有数据进行检查然后统一清除,资源消耗过大且效率不高

策略三:分代回收

为了减轻标记清除带来的资源消耗过大问题出了分代回收策略

分代回收】:分代回收一般分为三代:新生代、青春代、老年代。 对新定义变量的值放在新生代中,假设每隔5分钟检查一次,当多次检查发现该值仍在引用则把该值放到下一层青春代中。青春代的扫描频率低于新生代。老年代同理

可以把分代回收比喻成学校老师检查,差学生老师每5分钟看一眼有没有在开小差;中等生老师每隔10分钟看一眼;好学生老师每隔20分钟看一眼。

此时也反应出一个缺点:假如数据值刚转移到老年代就被解除绑定关系,那需要等好久才能检查到该数据值没被绑定,所以回收会有延迟

二.流程控制

流程控制:就是控制事物的执行流程

事物的执行流程:
    1.顺序结构
        #从上到下依次执行代码
    2.分支结构
        #根据条件的不同执行不同代码
    3.循环结构
        #根据条件的不同决定是否重复执行代码

image

流程控制必备知识

1.python中使用代码的缩进来表示代码从属关系缩进一般为4个空格。缩进的子代码是否执行取决于上面没缩进的父代码。

2.目前只有if 、elif 、 else关键字可以拥有子代码。

3.当某行代码需要子代码时,结尾需跟冒号

4.同属于一个父代码的子代码们缩进量需一致

5.相同缩进量的代码无主次之分,按照顺序结构依次执行

1.分支结构

1.单if分支
if 条件:
    条件成立后执行的子代码

练习:

如果:女人的年龄>30岁,打印“阿姨好”

age = int(input('输入女人年龄:'))
if age > 30:
    print('阿姨好')
2.if..else分支
if 条件:
    条件成立后执行的子代码
else:
    条件不成立执行的子代码

练习:

如果:女人的年龄>30岁 打印“阿姨好”,否则打印“小姐姐好”

age = int(input('输入女人年龄:'))
if age > 30:
    print('阿姨好')
else:
    print('小姐姐好')

image

3.if..elif..else分支
if 条件1:
    条件1成立后执行的子代码
elif 条件2:
    条件1不成立,条件2成立后执行的子代码
else:
    以上条件都不成立后执行的子代码
    
#三个一起使用时永远只会走一个分支
#elif可以写多个
#elif 和 else不能单独使用,必须结合if一起使用

练习:

如果:成绩>=90,那么:优秀

如果成绩>=80且<90,那么:良好

如果成绩>=70且<80,那么:普通

其他情况:很差

score = int(input('输入学生成绩>>:'))
if score >= 90:
    print('优秀')
elif score >= 80:
    print('良好')
elif score >= 70:
    print('普通')
else:
    print('很差')

image

4.if的嵌套
if 条件1:
    条件1成立执行的子代码
    if 条件2:
        条件2也成立后执行的子代码
        if 条件3:
            条件3也成立后执行的子代码
        else:
            条件3不成立执行的子代码
    else:
        条件2不成立执行的子代码
else:
    条件1不成立执行的子代码
    
#if后可以继续跟if else可以最后再补但是需注意缩进量是否与父代码一致

练习:

如果:看到妹子上去要微信(可能成功,可能失败),成功后邀请妹子看电影(可能成功,可能失败),成功后邀请妹子回家看猫翻跟头(可能成功,可能失败)

is_wechat = input('是否要到微信(y/n):')
is_movie = input('是否约到看电影(y/n):')
is_home = input('是否约到回家看猫翻跟头(y/n):')
if is_wechat == 'y':
    print('成功要到微信')
    if is_movie == 'y':
        print('成功约到看电影')
        if is_home == 'y':
            print('成功约到回家看猫翻跟头')
        else:
            print('没约到回家看猫翻跟头')
    else:
        print('没约到看电影')
else:
    print('没要到微信')
    

image

2.循环结构

1.while循环
while 条件:
    条件成立后执行的循环体代码
    
'''
1.先判断条件是否成立,成立则执行循环体代码
2.循环体代码执行完会再回到条件判断处判断是否成立
3.成立则继续执行循环体代码
4.直到条件不成立才会结束循环
'''
#循环打印“你好”

while True:
    print('你好')

image

结束循环体的两种方式

1.利用计数器固定循环次数

#循环打印5次“你好”

count = 1
while count < 6:
    print('你好')
    count += 1

2.在循环体内部添加关键字强制结束

⛅while + break的使用

强制结束循环体代码

#循环打印1-10,打印到5结束打印

count = 1  #定义计数器
while count < 11:  #循环打印次数为10
    print(count)  #打印计数器
    count += 1  #计数器自增1
    if count == 6:  #当计数器等于6时
        break  #强制结束循环
#结果为:1 2 3 4 5

⛅while + continue的使用

当执行到continue时结束本次循环,并回到循环体条件判断处开始下一次循环

#循环打印1-5,到3跳过并继续打印

count = 1  #定义计数器
while count < 6:  #循环打印次数为5
    print(count)  #打印计数器
    count += 1  #计数器自增1
    if count == 3:  #当计数器=3时
        count += 1  #计数器自增1
        continue  #结束本次循环开始下一次循环
#结果为:1 2 4 5

⛅while + else的使用

循环体代码没有被break强制结束,循环体代码全部执行完就会执行else子代码

count = 1
while count < 6:
    print(count)
    count += 1
else:
    print('循环体代码全部执行完且没有被break!则执行else')
#结果为: 1 2 3 4 5 循环体代码全部执行完且没有被break!则执行else

标签:count,控制,流程,else,计数,引用,print,代码
From: https://www.cnblogs.com/oreoz/p/16736085.html

相关文章

  • 垃圾回收机制与控制流程及流程控制理论
    今日内容总结垃圾回收机制"""有一些语言内存空间的申请和释放都需要程序员自己写代码才能完成但是python却不需要通过垃圾回收机制自动管理"""1.引用计数nam......
  • python垃圾回收机制与流程控制
    垃圾回收机制有一些语言,内存空间的申请和清除都需要程序员自己写代码才可以完成,但是在python中却不需要,通过垃圾回收机制自动管理1.引用计数name='lizhi'表示数......
  • 垃圾回收机制与流程控制
    垃圾回收机制与流程控制目录垃圾回收机制与流程控制一、垃圾回收机制1.为什么要用垃圾回收机制2.垃圾回收机制的原理分析二、流程控制理论1.顺序结构2.分支结构3.循环结......
  • 流程控制-垃圾回收机制
    垃圾回收机制与流程控制垃圾回收机制引用计数数据值身上的引用计数name='123'#引用计数为1name1=name#引用计数+1delname1#引用计数-1'''数据值每多......
  • 垃圾回收机制与流程控制
    垃圾回收机制与流程控制1.垃圾回收机制引用计数数据值被引用的数量eg:name='timi'#数据值timi身上的引用计数为1name1=name#timi身上的引用计数为2当数据......
  • 垃圾回收、python中的流程控制
    垃圾回收机制1.概念垃圾回收机制(GC):是Python解释器自带一种机制,专门用来回收不可用的变量值所占用的内存空间2.原理Python的垃圾回收机制(GC)主要使用引用计数(referen......
  • Python之垃圾回收机制与流程控制
    python之垃圾回收机制与流程控制目录一、垃圾回收机制二、流程控制1.流程控制理论2.流程控制的必备python知识3.流程控制之分支结构(ifelse语句)(1)单if分支结构(2)if...el......
  • 垃圾回收机制/控制流程/分支结构/循环结构
    今日内容详细垃圾回收机制流程控制理论/必备知识分支结构循环结构1.垃圾回收机制:#在一些编程语言中内存的申请以及它的释放都需要程序员自己编写代码才可以实现......
  • 垃圾回收机制和流程控制三大重点
    今日分享垃圾回收机制流程控制理论(*****重点)流程控制之分支结构(*****重点)流程控制之循环结构(******重点)垃圾回收机制"""有一些语言内存空间的申请和释放......
  • 流程控制
    目录1.流程控制理论2.流程控制必备知识3.分支结构4.循环结构1.流程控制理论流程控制>>>:控制事物的执行流程事物执行流程总共可以分为三种1.顺序结构从上往下依次执行......