首页 > 其他分享 >垃圾回收机制与流程控制

垃圾回收机制与流程控制

时间:2022-09-27 21:12:54浏览次数:43  
标签:username 循环体 流程 回收 else 垃圾 条件 print 代码

垃圾回收机制与流程控制

1.垃圾回收机制

引用计数

数据值被引用的数量

eg:
name = 'timi'  # 数据值timi身上的引用计数为1
name1 = name  # timi身上的引用计数为2

当数据值身上的引用计数为0时,系统会认为此数据值已无任何作用,此时会被垃圾回收机制回收

反之就是数据值身上的引用计数不为0时不会被垃圾回收机制回收

标记清除

主要针对循环引用问题

某些时候数据值在没绑定变量名的情况下身上的引用计数不为0

eg:
    a1 = [1, 2]  # 引用计数为1
    a2 = [3, 4]  # 引用计数为1
    a1.append(a2)  # a1 = [1, 2, [3, 4]]  此时[3, 4]引用计数为2
    a2.append(a1)  # a2 = [3, 4, [1, 2]]  此时[1, 2]引用计数为2
    del a1  #断开变量名a1与列表[1, 2]的绑定关系   [1, 2]引用计数为1
    del a2  #断开变量名a2与列表[3, 4]的绑定关系   [3, 4]引用计数为1
    此时列表[1, 2]与[3, 4]身上都没有绑定的变量名但是引用计数却不为0

针对此种情况就产生了标记清除,其工作原理是:当内存占用达到一定程度时,程序会自动扫描程序中的所有数据,然后给只产生循环引用的数据打上标记之后一次性清除

分代回收

垃圾回收机制的频繁运行也会损耗各项资源,因此程序在扫描程序中的所有数据时会给数据自动做一个分级,使用频率从低到高放入各个级别中,各个级别程序的扫描频率不同,

image

2.流程控制理论

流程控制就是控制事物的执行流程,总共可以分为三种

  1. 顺序结构

    从上往下依次执行

  2. 分支结构

    事物的执行过程会根据条件的不同执行过程和结果也不同

image

  1. 循环结构

事务的执行会根据某个条件出现重复

image

流程控制必备知识

  1. python中使用代码的缩进来表示代码的从属关系,缩进量相同时代码的地位相同,按照先后顺序依次执行

    从属关系:缩进的代码也就是子代码是否执行取决于它的上层代码

  2. 不是所有的代码都有子代码

  3. 当某一行代码需要编写子代码,结尾要加冒号

  4. 当有多行子代码属于同一个上层代码时,缩进量相同

  5. pycharm中针对缩进量没有要求但是推荐使用四个空格(快捷键为tab)

3.流程控制之分支结构

单if分支结构

if 条件:
     条件成立之后才会执行的代码块
    username = input('请输入用户名:')
    if username == 'timi':
        print('你好')

image

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

if 条件:
    条件成立之后执行的子代码
else:
    条件不成立执行的子代码
username = input('请输入您的账号密码:')
if username == 'timi':
    print('登陆成功')
else:
    print('账号密码错误')

image

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

if 条件1:
    条件1成立之后执行的子代码
elif 条件2:
    条件1不成立,条件2成立执行的子代码
elif 条件3:
    条件1和2都不成立,条件3成立执行的子代码
else:
    上述条件都不成立执行的子代码
eg:
score = int(input('请输入分数:'))
if score >= 700:
    print('恭喜你被清华大学录取了')
elif score >= 600:
    print('恭喜你被985录取了')
elif score >= 500:
    print('恭喜你被一本大学录取了')
elif score >= 400:
    print('恭喜你被专科大学录取了')
else:
    print('复读吧,啥也不是!!!')

image

if的嵌套使用

就是在if的条件语句下面再加if条件

sex = input('看到一个人:')
if sex == '女':
    print('过去看看')
    appearance = input()
    if appearance == '美女':
        print('上去要微信')
        is_success = input()
        if is_success == '成功':
            print('聊天,增进关系')
        else:
            print('对不起我有男朋友了')
    else:
        print('路过')
else:
    print('重新找一个')
    

image

4.流程控制之循环结构

让一些代码反复执行

while 条件:
    条件成立之后执行的循环体代码

具体流程就是:
1.先判断条件是否成立
2.条件成立执行循环体代码
3.循环体代码执行完成以后回到条件判断处
4.条件成立则继续执行循环体代码
5.循环体代码的运行会一直持续到条件不成立

eg:
num = 1
while num <= 10:
    print(num)
    num += 1
print('结束')

image

循环体其它操作

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

while 条件:
    循环体代码
else:
    循环体代码没有被强制结束的情况下执行完毕就会执行else子代码

练习题

1.根据用户输入内容打印其权限
'''
jason --> 超级管理员
tom --> 普通管理员
jack,rain --> 业务主管
其他 --> 普通用户
'''

username = input('请输入用户名:')
if username == 'jason':
    print('超级管理员')
elif username == 'tom':
    print('普通管理员')
elif username == 'jack' or username == 'rain':
    print('业务主管')
else:
    print('普通用户')

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

black_username = ['jason', 'kevin', 'tony']
username_list = {'jack': 111, 'rain': 222}
username = input('请输入用户名:')
if username in black_username:  
    print('您已被加入黑名单')
elif username in username_list:
    pwd = int(input('请输入密码:'))
    if pwd == username_list[username]:
        print('成功登录')
    else:
        print('用户名密码错误')
else:
    print('用户不存在')

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

username_list = {'jack': 111, 'rain': 222}
count = 1
while count <= 3:
    username = input('请输入用户名:')
    if username in username_list:
        pwd = int(input('请输入密码:'))
        if pwd == username_list[username]:
            print('登陆成功')
            break
        else:
            print('密码错误请重新登录')
            count += 1
    else:
        print('用户名不存在请重新登录')
        count += 1
else:
    print('失败三次不允许登录')

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

count = 1
while count <= 3:
    age = int(input())
    if age > 18:
        print('猜大了')
        count += 1
    elif age < 18:
        print('猜小了')
        count += 1
    else:
        print('猜对了')
        break
    if count > 3:
        a = input('是否继续?(y/n)')
        if a == 'y':
            count -= 3
            continue
        else:
            break

标签:username,循环体,流程,回收,else,垃圾,条件,print,代码
From: https://www.cnblogs.com/zyg111/p/16735999.html

相关文章

  • 垃圾回收机制
    垃圾回收机制"""有一些语言内存空间的申请和释放需要程序员写代码才能完成,但是python不需要,通过垃圾回收机制自动管理"""1.引用计数 name='max'#数据值'max'的引......
  • 垃圾回收、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.顺序结构从上往下依次执行......
  • 垃圾回收机制 流程控制理论
    今日内容垃圾回收机制'''有一些语言内存空间申请和释放都需要程序员自己写代码才可以完成但在python里垃圾回收机制自动管理'''1.引用计数name='sun......
  • 进入python的世界_day5_python基础——流程控制
    写在开头,昨天是补全了八种常见数据类型的剩下三种、用户交互、常用运算符,今天主要学习流程控制很重要昨日作业补充另一种方法:原理:可以将表格整体看成是一个字符串......
  • 流程控制——练习
    今日作业:整理今日内容及博客1.根据用户输入内容打印其权限'''jason-->超级管理员tom-->普通管理员jack,rain-->业务主管其他-->普通用户'''#coding:utf......
  • 垃圾回收机制
    目录引入1.引用计数2.标记清除3.分代回收引入 解释器在执行到定义变量的语法时,会申请内存空间来存放变量的值,而内存的容量是有限的,这就涉及到变量值所占用内存空间的回收......