day1`4整理

day 1
计算机的基础知识
1 五部分
控制器 运算器 储存器 输入\输出设备
cpu [控制器(?) 运算器(?)]
储存器 [寄存器(分布在cpu上 速度最快,容量最小)
内存(较快),硬盘(慢)]
rom 只读存储器
ram 可读写存储器
平台
硬件加操作系统
跨平台
跨平台性能的好坏是衡量一个软件好的重要标准
操作系统
是协调,管理,操作 计算机硬件和软件资源的程序,讲硬件的命令指令封装成接口公用户和软件应用使用>

cpu X86型号 64 位数 cpu一次读取指令的最大位数

内存是主内存 :我们所有的程序和运行程序过程中产生的值都放在内存中

内核态用户态 :当计算机调用硬件指令时,切换为内核态

IO延迟 = 平均寻道 + 平均延迟

开机过程
首先启动bios(存储在主板的rom中,)
BIOS 调用 coms 存储过程量和参数
选择启动项
读取启动项第一个扇区
启动操作系统




day 2
机器语言
汇编语言
高级语言: 编译型 c
解释型语言 python
编译型 运行快 开发慢 跨平台差
解释型 运行慢 开发快 跨平台强

python的运行
Python解释器启动(从硬盘 读入内存)
.py文件读入内存
将.py文件用python解释器按照python语法运行
环境变量
指在操作系统中用来指定操作系统运行环境的一系列参数
作用当运行程序时如果在本目录中找不到会从环境变量中找


day 3:

变量
变化的量
记录事物的状态 程序的运行本质上就是 程序的运行
name = 'Alex'

变量的三部分:
变量名 指向等号右方的地址
赋值 将变量值和变量名绑定
变量值 内存地址中存储的内容
变量的三种特性
id() id号 与内存地址一一相对应,但不等于内存地址
type() 变量的种类
value 值
变量的命名规则和风格
1数字字母下划线组成且数字不在开头
2不能是关键字
3要言之有意
ps: 不能太长,不能用中文
1 尽量用小写字母下划线组成
2 或者驼峰体(不建议)
常量:约定俗成 纯大写变量名为常量(不赞成更改)

is id() , == value
is 比较的是id号
== 比较的是值
id相等值一定相等,反之则不一定.
小整数池
python解释器为了

变量类型
数字(10 10.1)
(为什么表示数字类型的状态)
整数 int n = 10
浮点数 float m = 10
整数类型可以和字符串类型直接相加
type(n) type(m)
字符串 ('Alex')
str (为了表示可描述性状态的变量)
a = '秋天的落叶'
其他:
可相加 可以跟数字相乘(不常用)
字符串的嵌套


列表([])
list (存储多个状态且可以通过索引读取出来)
l = ['name','age','hobby']
其他:列表嵌套 列表的循环引用(采取 标记清除发)

字典({key:value,...})(key一般是字符串''value随便)
dict (类似列表 容器类型,不过不是通过索引取值而是通过key取值)
dic = {'name':'Alex','hobby':['安静','心跳的声音']}
其他 嵌套
bool(True,False)
day4 (第四天的不小心删掉了用笔记代替)
作业
# 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

垃圾回收机制

# 垃圾回收机制
# 是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

用户交换 与格式化输出(补遗)

# print()
# input('')
# python 3 中    input()输出的都是字符串类型
# name = input('请输入你的名字')
# print(name)
# print(name,type(name))
# age = input('请输入你的年龄')
# print(age,type(age))
# print(int(age))
# # print(int('abc'))
# print(int(5022.1644))
# int 转化数字只能转化纯数字类型的字符串
#
# python 2 中    raw_input 跟python3 中的input相同
#                 但是python2 中的
# input(): 要求用户必须输入一个明确的数据类型,输入的是什么类型,就存成什么类型

# 字符串类型格式化
# 较老
# name = input('请输入你的名字')
# author = input('请输入这首歌的作者')
# print('与鲜活的枝丫%s,你想法你我就'%(name))
# print('中一万多莲花%s,我怎么能波澜不进,去附和%s' % (name,author))
# print('是不是会担心会变成一只野兽%(name)s为心跳%(author)s的节奏'% {'author' : author,'name' : name})


#forma (建议使用)
# print('想要练就就是武功,无论{}和{}'.format('春夏','秋冬'))
# print('作词{1}最想看到是你的{0}'.format('微笑','胆小'))
# print('世界突然变得好{name},只剩{author}的声音'.format(name='安静',author = '心跳'))
# 了解
"""
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

"""
print('{0:*<10}'.format('开始执行'))

# f(不建议使用)
x = input(">>>")
y = input('>>>')
print(f'只怕你把{x}当习惯{y}')
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

 

posted @ 2020-03-06 06:27  不忘初心--方得始终  阅读(162)  评论(0编辑  收藏  举报