Python基础5
今日内容概要
- 
垃圾回收机制
- 
流程控制理论
- 
流程控制必备知识
- 
分支结构
- 
循环结构
- 
作业
今日内容详细
垃圾回收机制
  有一些语言 内存空间的申请和释放都需要程序员自己写代码才可以完成
但是python却不需要 通过垃圾回收机制自动管理,Python采用的是引用计数机制为主,标记-清除和分代收集两种机制为辅的策略。
引用计数
 当数据值身上的引用计数为0的时候 就会被垃圾回收机制当做垃圾回收掉
 当数据值身上的引用计数不为0的时候 永远不会被垃圾回收机制回收
name = '张三'  #数据值张三身上的引用计数为1
name1 = name   #数据值张三身上的引用计数为2
del name1     #数据值张三身上的引用计数为1

标记清除
主要针对循环引用问题,当内存占用达到临界值的时候 程序会自动停止 然后扫描程序中所有的数据并给只产生循环引用的数据打上标记 之后一次性清除
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

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

流程控制理论
流程控制就是控制事物的执行流程
事物执行流程可以分为三种
- 
顺序结构  从上往下依次执行 没学习之前所编写的都属于该结构 

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

- 
循环结构  事物的执行会根据某个条件重复 

 在实际编写代码时 很多时候可能会三者混合使用
流程控制必备知识
- python中使用代码的缩进来表示代码的从属关系
- 并不是所有的代码都可以拥有缩进的代码
- 如果有多行子代码属于同一个父代码 那么这些子代码需要保证相同的缩进量
- python中针对缩进量没有具体的要求 但是推荐使用四个空格(windows中tab键)
- 当某一行代码需要编写子代码的时候 那么这一行代码的结尾肯定需要冒号
- 相同缩进量的代码彼此之间平起平坐 按照顺序结构依次执行
分支结构
单if分支结构
# 格式
if 条件:
    条件成立之后才会执行的代码块
# 实例
name = input('请输入您的姓名:')
if name == '张三':
    print('你好')

if...else...分支结构
# 格式
if 条件:
    条件成立之后执行的子代码
else:
    条件不成立执行的子代码
    
# 实例
name = input('请输入您的姓名:')
if name == '张三':
    print('张三你好')
else:
    print('你不是张三')

if...elif...else分支结构
# 格式
if 条件1:
	条件1成立之后执行的子代码
elif 条件2:
	条件1不成立 条件2成立执行的子代码
elif 条件3:
	条件1和2都不成立 条件3成立执行的子代码
else:
	上述条件都不成立 执行的子代码
    
# 实例
score = input('请输入您的成绩:')
score = int(score)    # input默认是字符串,通过int转换成整型
if score >= 90:
	print('优秀')
elif score >= 80:
	print('良好')
elif score >= 70:
	print('一般')
elif score >= 60:
	print('及格')
else:
	print('挂科')

if的嵌套使用
# 格式
if 条件1:
	条件1成立执行的代码
	if条件2:
    条件2成立执行的代码
   else:
    条件2不成立执行的代码
else:
	条件1不成立执行的代码
	 
# 实例
age = 18
money = 10
if age >=18:
    print('成年了,可以去网吧')
    if money >= 10:
        print('有钱去网吧')
    else:
        print('钱不够,去不了网吧')
else:
	print('未成年不能去网吧')

循环结构
 就是让一些代码反复的执行
# 格式
while 条件:
    条件成立之后执行的子代码(循环体代码)
# 执行流程
1.先判断条件是否成立
2.如果成立则执行循环体代码
3.循环体代码执行完毕后再次回到条件判断处 判断条件是否成立
4.如果成立 则继续执行循环体代码
5.按照上述规律依次执行 直到条件不成立才会结束循环体代码的执行
# 强制结束循环体
break   循环体代码一旦执行到break会直接结束循环
while 条件:
    条件成立之后执行的子代码(循环体代码)
    break  # 直接结束循环 )
    
# 结束本次循环
continue  循环体代码一旦执行到continue会结束本次循环 开始下一次循环
while 条件:
    条件成立之后执行的子代码(循环体代码)
    continue  
    条件成立之后执行的子代码(循环体代码)
    
    
# 不常用的循环方法
while 条件:
    循环体代码
else:
    循环体代码没有被强制结束的情况下 执行完毕就会执行else子代码

作业
'''作业1'''
# name = input('请输入您的姓名:')
# if name == 'jason':
#     print('您的权限为超级管理员')
# elif name == 'tom':
#     print('您的权限为普通管理员')
# elif name == 'jack' or 'rain':
#     print('您的权限为业务主管')
# else:
#     print('您的权限为普通用户')
'''作业2'''
# name = 'oscar'
# userpwd = 123
# black_user_list = ['jason', 'kevin', 'tony']
# username = input('请输入您的用户名:')
# if username in black_user_list:
#     print('您是黑名单用户,禁止登陆')
# elif username != name:
#     print('用户名错误或没有该用户,请重新尝试')
# else:
#     password = int(input('请输入密码:'))
#     if password == userpwd:
#         print('用户名密码正确,登陆成功')
#     else:
#         print('密码错误,请重新登陆')
'''作业3'''
# name = 'oscar'
# userpwd = 123
# black_user_list = ['jason', 'kevin', 'tony']
# count = 0
#
#
# while count < 3:
#     username = input('请输入您的用户名:')
#     if username in black_user_list:
#         print('您是黑名单用户,禁止登陆')
#         count += 1
#         print(f'总共三次机会, 您以尝试{count}次')
#     elif username != name:
#         print('用户名错误或没有该用户,请重新尝试')
#         count += 1
#         print(f'总共三次机会, 您以尝试{count}次')
#     else:
#         password = int(input('请输入密码:'))
#         if password == userpwd:
#             print('用户名密码正确,登陆成功')
#             break
#         else:
#             print('密码错误,请重新登陆')
#             count += 1
#             print(f'总共三次机会, 您以尝试{count}次')
'''作业4'''
# age = 18
#
# while True:
#     guess_age = int(input('请输入您猜的年龄'))
#     if guess_age == age:
#         print('恭喜你猜对了')
#         break
#     elif guess_age > age:
#         print('猜大了')
#     else:
#         print('猜小了')
'''作业5'''
# age = 18
# while True:
#     count = 0
#     while count < 3:
#         guess_age = int(input('请输入您猜的年龄'))
#         if guess_age == age:
#             print('恭喜你猜对了')
#             break
#         elif guess_age > age:
#             print('猜大了')
#             count += 1
#         else:
#             print('猜小了')
#             count += 1
#     again = input('是否继续尝试(y/n):')
#     if again == 'y':
#         continue
#     elif again == 'n':
#         break
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号