首页 > 其他分享 >垃圾回收机制和流程控制三大重点

垃圾回收机制和流程控制三大重点

时间:2022-09-27 20:44:05浏览次数:50  
标签:username count elif 代码 回收 else 垃圾 print 三大

今日分享

  • 垃圾回收机制
  • 流程控制理论(*****重点)
  • 流程控制之分支结构(*****重点)
  • 流程控制之循环结构(******重点)

垃圾回收机制

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

一.引用计数器

image
在python程序中创建的任何对象都会放在refchain链表中。
列如:

name = '高彦' # 字符串对象
age = 18
hobby = ['跳舞','唱歌' ]
"""
引用的个数:
比如  name = '高彦',会给'高彦'开辟一个新的内存储存空间来存放到双向链表之中
这时候有   name1 = name ,不会创建两个'高彦',而是将name1指向'高彦'
那么 引用数也就变成了2个,也是'高彦'被引用了2次。
"""

这些对象都会放到这些双向链表当中,也就是帮忙维护了python中所有的对象。
也就是说如果你得到了refchain,也就得到了python程序中的所有对象。

name = 'gaoyan'  # 数据值jason身上的引用计数为1
name1 = name  # 数据值jason身上的引用计数加一 为2
del name1  # 数据值jason身上的引用计数减一 为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  # 断开变量名l1与列表的绑定关系   引用计数为1
del l2  # 断开变量名l2与列表的绑定关系   引用计数为1
当内存占用达到临界值的时候 程序会自动停止 然后扫描程序中所有的数据
并给只产生循环引用的数据打上标记 之后一次性清除

三.分代回收

image
垃圾回收机制的频繁运行也会损耗各项资源
新生代、青春代、老年代(越往下检测频率越低)

流程控制理论

流程控制>>>:控制事物的执行流程
	事物执行流程总共可以分为三种
    	1.顺序结构
   	从上往下依次执行 我们之前所编写的代码都属于该结构
 	2.分支结构
        事物的执行会根据条件的不同做出不同的执行策略
 	3.循环结构
        事物的执行会根据某个条件出现重复
 	ps:在代码的世界里 很多时候可能会出现三者混合
提示:作为小白 在学习流程控制的时候 建议做到代码和图形的结合

流程控制必备知识

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

分支结构

1. 单if分支结构
   if 条件:
      条件成立之后才会执行代码块
   username = input('username>>>:')
   if username == 'Danielwei';
   	print ('老师好')

image

2.if...else...分支结构
	if 条件:
     	条件成立之后执行的子代码
	else:
      	条件不成立执行的子代码
username = input('username>>>:')
if username == '吴彦祖':
	print('老师好')
else:
	print('fuck off')

image

3.if...elif...else分支结构
if 条件1:
       条件1成立之后执行的子代码
 	elif 条件2:
       条件1不成立 条件2成立执行的子代码
  	elif 条件3:
       条件1和2都不成立 条件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('挂科 交钱重修')
4.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('不是本少爷')

循环结构

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

# count = 1
# while count < 5:
#     print('hello world')
#     count += 1  # count = count + 1
# print('想不想干饭?')

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 'rain':   # elif username in ('jack','rain')
    print('您是业务主管')
else:
    print('您是普通用户')
	
	
2.编写用户登录程序
 要求:有用户黑名单 如果用户名在黑名单内 则拒绝登录
    eg:black_user_list = ['jason','kevin','tony']
 如果用户名是黑名单以外的用户则允许登录(判断用户名和密码>>>:自定义)
    eg: oscar 123
	
	
admin = 'wei'
password = '123456'
black_user_list = ['jason','kevin','tony']
username = input('登录您的账户>>>:')
password2 = input('输入你的密码>>>:')
if username in black_user_list:
    print('Sorry you are backlisted ,logon denied')
elif username == admin and password2 == password:
    print('登陆成功')
else:
    print('你的用户名或者密码错误')

3.编写用户登录程序
 用户如果登录失败 则只能尝试三次
 用户如果登录成功 则直接结束程序
name = 'wei'
pw = '123'
count = 0
while count < 3:
    username = input('请输入您的名字>>>:')
    password = input('请输入您的密码>>>:')
    if username == name and password == pw:
        print('登陆成功')
        while True:
            cmd = input('>>:')
            if cmd == 'quit':
                break
            print('登陆成功')
        break
    else:
        print('输入的用户名或者密码错误>>>:')
        count += 1
4.猜年龄的游戏
 假设用户的真实年龄是18 编写一个猜年龄的游戏 获取用户猜测的年龄
 基本要求:可以无限制猜测 每次猜错给出提示(猜大了 猜小了) 猜对则结束程序
 拔高练习:每次猜测只有三次机会 一旦用完则提示用户是否继续尝试 用户通过输入n或者y来表示是否继续尝试 如果是y则继续给用户三次猜测机会 否则结束程序
man = 18  # 定义初始年龄
count = 0
while True:
    guess = input('猜猜多大年龄>>>:')
    guess = int(guess)
    if guess == man:
        print('猜对了!')
        break
    elif guess > man:
        print('猜大了!')
    else:
        print('猜小了!')

拔高

age = 18
count = 0
while True:
    age1 = int(input('请输入年龄>>>:'))
    if age1 == age:
        print('猜对了!')
        break
    elif age1 > age:
        print('猜大了!')
        count += 1
    else:
        print('猜小了!')
        count += 1
    if count == 3:
        con = input('还要继续吗,继续y,结束n>>>:')
        if con == 'y':
            count = 0
        elif con == 'n':
            print('结束!')
            break

标签:username,count,elif,代码,回收,else,垃圾,print,三大
From: https://www.cnblogs.com/wei0919/p/16734860.html

相关文章

  • 垃圾回收机制 流程控制理论
    今日内容垃圾回收机制'''有一些语言内存空间申请和释放都需要程序员自己写代码才可以完成但在python里垃圾回收机制自动管理'''1.引用计数name='sun......
  • 垃圾回收机制
    目录引入1.引用计数2.标记清除3.分代回收引入 解释器在执行到定义变量的语法时,会申请内存空间来存放变量的值,而内存的容量是有限的,这就涉及到变量值所占用内存空间的回收......
  • python垃圾回收机制、流程控制理论、流程控制理论必备知识、分支结构、循环结构
    目录垃圾回收机制1引用计数2标记清除3分代回收流程控制理论流程控制必备知识分支结构循环结构垃圾回收机制一些语言存放空间和释放都需要程序员自己去写代码完成,但是pyth......
  • 垃圾回收,if else while
    今日内容概要1垃圾回收机制2流程控制理论3流程控制必备知识4分支结构5循环1垃圾回收机制"""为了节省空间内存,减轻电脑压力,python有自带的垃圾回收机制自动......
  • 7、python入门篇 垃圾回收和流程控制
    目录今日内容总结一、垃圾回收机制1、引用计数2、标记清除3、分类代收二、流程控制1、理论2、必备知识3、分支结构4、循环结构今日内容总结一、垃圾回收机制垃圾回收机......
  • 垃圾回收机制和流程控制理论
    垃圾回收机制和流程控制理论今日内容概要垃圾回收机制流程控制理论(重要)流程控制之分支结构(重要)流程控制之循环结构(重要)今日内容详细垃圾回收机制"""有一些语言......
  • 垃圾回收机制、流程控制、分支结构、循环结构
    垃圾回收机制"""有一些语言内存空间的申请和释放都需要程序员自己写代码才可以完成但是python却不需要通过垃圾回收机制自动管理"""1.引用计数name='jason' ......
  • 垃圾回收机制 流程控制
    垃圾回收在程序执行过程中,变量绑定和引用以积极各种内存操作,使用过后不在使用,如果不清理就会产生垃圾数据,占用大量内存,导致计算机不能正常运行,有一些语言内存空间的申请......
  • 垃圾回收机制及流程控制
    1、昨日内容回顾布尔值(bool)常见的布尔值为False的数据值、布尔值的变量的命名方式。元组(tuple)不可变数据类型。集合(set)用来做成员运算、空集合。计算机......
  • 内存回收、流程控制和循环
    垃圾回收机制"""有一些语言内存空间的申请和释放都需要程序员自己写代码才可以完成但是python却不需要通过垃圾回收机制自动管理"""1.引用计数name='jason'......