day5 笔记

垃圾处理机制
# 垃圾回收机制
# 是python自带的一种自动回收无用内存空间的机制
# 节省内存空间提高运行效率
# 1 引用计数 当变量值被变量名直接连接或者间接连接时,则变量计数加一,当变量计数为零时,则解释器回收内存
# 引用计数分为:直接引用和间接引用
# 直接引用 : x = 10
# 间接引用 : l = [1 ,2,x]
'''
ps: l1 = [1 , 2 , x] 与 l2 = [1,2,10]  一样
x = 10 x 中存储的是x的10的内存地址
l1,l2中存取的是列表 [1,2,10]内存地址
x = 10
l = [x]
x = 123
print(l) == print([10])
当列表中存取变量时只存取变量相对应的内存地址而跟变量无关,变量变列表中的值不变.
'''
# 但是引用计数存在漏洞 为了修补引用计数的漏洞 产生了
# 2 标记清楚算法
# 容器数据类型的循环引用造成漏洞   例如 l1 = ['alex','lee',l2} l2 = ['alex','lee',l1}  当解除l1 l2 与其对应变量值的绑定关系后
# 其变量值相互关联引用计数算法无法不能回收,我们也无法调用,浪费内存空间.所以有了标记清除法
# 栈区 : 存放变量名称
# 堆区 : 存放变量值
#   开始时扫描 从栈区每个变量名出发往后标记.堆区中没有标记的值就是无法被调取的.清除.
# 分代回收(降低引用计数的扫描频率,提高回收效率)
# 给变量设置权重值
# 降低.引用计数扫描中一直存在连接的变量扫描频率.

input('')
View Code

用户交互

# 1、接收用户的输入
# 在Python3:input会将用户输入的所有内容都存成字符串类型
# username = input("请输入您的账号:")  # "egon"
# print(username, type(username))

# age = input("请输入的你的年龄: ")  # age="18"
# print(age, type(age))
# age=int(age) # int只能将纯数字的字符串转成整型
# print(age > 16)

# int("12345")
# int("1234.5")
# int("1234abc5")


# 在python2中:
# raw_input():用法与python3的input一模一样
# input(): 要求用户必须输入一个明确的数据类型,输入的是什么类型,就存成什么类型
# >>> age=input(">>>>>>>>>>>>>>>>>>>>>: ")
# >>>>>>>>>>>>>>>>>>>>>: 18
# >>> age,type(age)
# (18, <type 'int'>)
# >>>
# >>> x=input(">>>>>>>>>>>>>>>>>>>>>: ")
# >>>>>>>>>>>>>>>>>>>>>: 1.3
# >>> x,type(x)
# (1.3, <type 'float'>)
# >>>
# >>> x=input(">>>>>>>>>>>>>>>>>>>>>: ")
# >>>>>>>>>>>>>>>>>>>>>: [1,2,3]
# >>> x,type(x)
# ([1, 2, 3], <type 'list'>)
# >>>


# 2。字符串的格式化输出
# 2.1 %
# 值按照位置与%s一一对应,少一个不行,多一个也不行
# res="my name is %s my age is %s" %('egon',"18")
# res="my name is %s my age is %s" %("18",'egon')
# res="my name is %s" %"egon"
# print(res)

# 以字典的形式传值,打破位置的限制
# res="我的名字是 %(name)s 我的年龄是 %(age)s" %{"age":"18","name":'egon'}
# print(res)

# %s可以接收任意类型
# print('my age is %s' %18)
# print('my age is %s' %[1,23])
# print('my age is %s' %{'a':333})
# print('my age is %d' %18) # %d只能接收int
# print('my age is %d' %"18")

# 2.2 str.format:兼容性好
# 按照位置传值
# res='我的名字是 {} 我的年龄是 {}'.format('egon',18)
# print(res)

# res='我的名字是 {0}{0}{0} 我的年龄是 {1}{1}'.format('egon',18)
# print(res)

# 打破位置的限制,按照key=value传值
# res="我的名字是 {name} 我的年龄是 {age}".format(age=18,name='egon')
# print(res)

# 了解知识
"""
2.4 填充与格式化
# 先取到值,然后在冒号后设定填充格式:[填充字符][对齐方式][宽度]
# *<10:左对齐,总共10个字符,不够的用*号填充
print('{0:*<10}'.format('开始执行')) # 开始执行******

# *>10:右对齐,总共10个字符,不够的用*号填充
print('{0:*>10}'.format('开始执行')) # ******开始执行

# *^10:居中显示,总共10个字符,不够的用*号填充
print('{0:*^10}'.format('开始执行')) # ***开始执行***
2.5 精度与进制

print('{salary:.3f}'.format(salary=1232132.12351))  #精确到小数点后3位,四舍五入,结果为:1232132.124
print('{0:b}'.format(123))  # 转成二进制,结果为:1111011
print('{0:o}'.format(9))  # 转成八进制,结果为:11
print('{0:x}'.format(15))  # 转成十六进制,结果为:f
print('{0:,}'.format(99812939393931))  # 千分位格式化,结果为:99,812,939,393,931

"""

# 2.3 f:python3.5以后才推出
x = input('your name: ')
y = input('your age: ')
res = f'我的名字是{x} 我的年龄是{y}'
print(res)
View Code

运算符

# 运算符
# 算数运算符
#   +,-,*,/,//,**,%
# 比较运算符
# >,>=,<,<=,==,!=
# 赋值运算符
#  = 变量的赋值运算
'''
增量赋值
例如
a += 1
b -= 1
c *= c
d **= 2
e %= 2
f //= 2
g /= 2
'''
# 链式赋值
x = 10
y = x
z = y
'+++++++++++++++++++++++++'
x = y = z = 10
print(id(x),id(y),id(z))
# 交叉赋值
x = 10
y = 20
temp = x
x = y
y = temp
print(x,y)
'++++++++++++++++++++'
x = 10
y = 20
x,y = y,x
print(x,y)
# 解压赋值(*****)
# 重点
salaries = [111,222,333,444,555,666,777]
mon_0 = salaries[0]
mon_1 = salaries[1]
mon_2 = salaries[2]
mon_3 = salaries[3]
mon_4 = salaries[4]
mon_5 = salaries[5]
mon_6 = salaries[6]
print(mon_0,mon_1,mon_2,mon_3,mon_4,mon_5,mon_6)
'++++++++++++++++++++++++++++++++++++++++++++++++++++'
mon_6,mon_5,mon_4,mon_3,mon_2,mon_1,mon_0 = salaries
print(mon_0,mon_1,mon_2,mon_3,mon_4,mon_5,mon_6)
'++++++++++++++++++++++++++++++++++++++++++++++++'
# 只取开头
mon_0,mon_1,*_= salaries
print(mon_0,mon_1)
# 只取结尾
*_,mon_5,mon_6 =salaries
print(mon_5,mon_6)
'''众所周知 *代表所有的意思
*讲没有对应关系的值存为列表然后赋值给紧跟其后的变量名
'''
View Code

作业

# 1
print('{0:-^36}'.format('in to Egon'))
a = '''Name : {}
Age : {}
Sex : {}
Job : {}
 '''
print(a.format('Egon',22,'male','teachor'))
print('{0:-^36}'.format('end'))
''''不熟练待会练习'''
# 2
users = {'enon':'永远18岁','lee':'睡你妹起床学习'}
user_name = input('输入用户名>>>')
if user_name.lower() in users.keys():
    password = input('输入密码')
    if password == users[user_name.lower()]:
        print('登录成功')
    else:
        print('密码错误,请重试')
else:
    print('用户名不存在')
# 3
egon_age = 18
temp_age = int(input('猜一下egon的年龄'))
if temp_age > egon_age:
    print('我那么老么,想清楚在说话 啊!')
elif temp_age < egon_age:
    print('哈哈,我看起来这么年轻啊,小嘴抹了蜜')
else:
    print('聪明,帅气如我永远18')
# 4
print(10000//30)
print(10000%30)
# 5
egon = 18
egon += 3
print(egon)
# 6
x = y = z = 10
# 7
dsb = 'egon'
superman = 'alex'
dsb , superman = superman, dsb
# 8
name_1 , naem_2,name_3,name_4,name_5,name_6 = ['alex_sb','wusir_sb','oldboy_sb','egon_nb','lxx_nb','tank_nb']
print(name_1 , naem_2,name_3,name_4,name_5,name_6)
View Code

猜你喜欢

转载自www.cnblogs.com/lee1225/p/12422671.html