时隔10天,我终于又再次拾起了我的狗屎python,今天主要是把前七天(当然我学的可不止七天)进行了一个总复习,最后是欠了个猜年龄游戏plus版,先欠着吧,下次再说,刚刚在图书馆无意间看到一本书,看书去了,继续努力!!!
目录- 一 计算机之编程
- 二 计算机组成原理
- 三 计算机操作系统
- 四 编程语言分类
- 五 执行python的两种方式
- 六 执行python程序的两种IDE
- 七 变量
- +注释的语句,#后面的字符不执行语法,即为普通字符,一般用于解释某一段代码
- 八 与用户交互
- 九 格式化输出
- 十 基本运算符
- 十一 控制
- 十二 数据类型内置方法
一 计算机之编程
1 什么是编程语言
编程语言是人与计算机交流的介质
2 什么是编程
通过使用编程语言编写的一个个的文件
3 为什么要编程
为了奴隶计算机,解放劳动力,为人们完成一个个具体的任务
二 计算机组成原理
1 计算机五大组成
1. CPU
-
控制器:控制硬件
-
运算器:进行逻辑运算+算术运算
2. 内存
临时储存数据的硬件
- 优点:速度快
- 缺点:临时存储,断电即消失
3. 外存
永久存储数据的硬件
- 优点:永久存储
- 缺点:速度慢
4. 输入设备
输入信息的硬件,如键盘/鼠标/u盘
5. 输出设备
输出信息的硬件,如显示器/打印机/u盘
6.I/O设备
既可输入信息,又可以输出信息的硬件,即为I/O设备
2 32位和64位
-
32位:一次性能够读取32个二进制位的操作系统
-
64位:一次性能够读取64个二进制位的操作系统
3 多核cpu
可以同时完成多件事的CPU,如4核CPU,一个大CPU集成了4个小的CPU
4 硬盘的工作原理
1. 机械硬盘工作原理
-
机械手臂:寻找数据
-
磁道:存储数据
-
扇区:划分磁道
-
平均寻道时间:由于工业水平的限制,为5ms
-
平均延迟时间:以7200r/min的硬盘为例,为4.15ms
- 7200r/min / 60 = 120r/s
- 1/120r/s = 0.0083s = 8.3ms
- 8.3ms / 2 = 4.15ms
-
平均寻找数据的时间:5+4.15 = 9.15ms
2. 固态硬盘工作原理
基于算法和电存储的外存
三 计算机操作系统
1 文件是什么
操作系统提供的一个虚拟的单位
2 应用程序是什么
应用程序其实是一堆文件组成的,用于完成具体的某个任务
操作系统能干什么
接受应用程序/外部指令,然后控制硬件
3 计算机三大组成
1.应用程序
应用程序其实是一堆文件组成的,用于完成具体的某个任务,与人和操作系统交互
2.操作系统
接受应用程序/外部指令,然后控制硬件,与人/应用程序/硬件交互
3.硬件
最终的目的是用来存储数据的,与操作系统交互
3 应用程序的启动和操作系统的启动
1.应用程序的启动
- 双击qq(发送指令给操作系统)
- 操作系统接受指令,将指令转化为0和1发送给CPU
- CPU接受指令,发送给内存
- 内存从硬盘中取出qq的程序,执行,打开qq
2.操作系统的启动
- 按下开机键(启动一个临时操作系统)
- 临时操作系统唤醒真正的操作系统
四 编程语言分类
1 机器语言
- 优点(较于汇编语言):执行效率高
- 缺点(较于汇编语言):开发效率低
2 汇编语言
- 优点(较于机器语言):开发效率高
- 缺点(较于机器语言):执行效率低
3 高级语言
1.解释性语言
类似于同声传译,写一句翻译一句
- 优点(编译性语言):开发效率高
- 缺点(编译型语言):执行效率低
2 编译型语言
类似于谷歌翻译,写完所有的代码,编译后得到结果,并且结果可以保存,无法得到及时的报错反馈
- 优点(解释性语言):执行效率高
- 缺点(解释性语言):开发效率低
五 执行python的两种方式
1 交互式
在终端内(cmd)内输入python3,然后输入python代码
2 命令式
在终端内(cmd)输入python3的文本文件路径
六 执行python程序的两种IDE
1 pycharm
2 jupyter
七 变量
1 什么是变量?
用来描述世间万物变化的状态
2 变量的组成
变量名 = 变量值 变量名是用来接受变量值的
3 变量的定义规范
- 具有某种意义
- 由数字,字母,下划线组成,且不能由数字开头(也不能用下划线开头)
- 不能用python关键字
4 定义变量的两种方式
- 驼峰体:‘name of nick’
- 下划线:‘name_of_nick'(推荐)
5 常量
常量是约定俗成的一种规范,常量名定义方式为全大写,实际上可以被修改
6.注释
1.单行注释
+注释的语句,#后面的字符不执行语法,即为普通字符,一般用于解释某一段代码
2.多行注释
三引号’‘’ 或三双引号”“”
7 引用计数
变量值的引用次数,
x = 257 # 257的引用计数为1
y = 257 # 257的引用计数为2
del x # 257的引用计数为1
8 垃圾回收机制
当变量值的引用计数为0的时候,该变量值会被python自动回收他的内存占用
9 小整数池
[-5,256]之间的整数会在python解释器启动的时候,自动开辟一块内存存入这些整数,也就是说这些整数不会因为引用计数为0而被删除
八 与用户交互
input
input输入的都是字符串形式
九 格式化输出
1 占位符
- %s 接受任意数据类型的数据
- %d 接受数字类型的数据
name = 'sun'
'name is %s'%name
2 format格式化
{}接受任意数据类型的数据
name = 'sun'
'name is {}'.format(name)
3 f-string格式化
在字符串前面加上f或F,然后使用{}接受任意类型的数据
name = 'sun'
f'name is {name}'
十 基本运算符
1 算术运算符
+ - * / % //
2 逻辑运算符
and or not
3 比较运算符
> >= < <= == !=
4 赋值运算符
= += -= *= /= //= %=
5 身份运算符
is or is not
id相同的值一定相同,值相同的id不一定相同
6 运算符优先级(略)
如果需要某个运算符优先运算,则加个括号,
7 链式赋值
x = y = z = 10
8 交叉赋值
x = 10
y = 20
x,y = y,x
# or使用临时变量
x = 10
y = 20
temp = x
x = y
y = temp
9 解压缩
hobby_list = ['read','run','sleep','fishing','playing']
# 如果取第2,3,5个爱好
_,hobby2,hobby3,_,hobby5 = hobby_list
print(hobby2,hobby3,hobby5)
十一 控制
1 流程控制之if判断
1.if
if 条件:
代码块
2.if else
if 条件:
代码块
else:
代码块
3.if ... elif ... elif... else
if 条件:
代码块
elif 条件:
代码块
elif 条件:
代码块
...(可以写任意个)
else:
代码块
2 流程控制之while循环
1.while
while 条件:
代码块
2.while + break
while 条件:
代码块
break #结束本层循环,跳出循环
3.while + continue
while 条件:
代码块
if 条件:
代码块
continue #结束本层循环,不执行下面代码。继续循环
代码块
4.while + else
while 条件:
代码块
else:
print('如果我没有被break,我就会被打印出来'
3 流程控制之for循环
1.for
for i in range/list/tuple/str/dict/set(可迭代对象):
print(i)
2.for + break
for i in range/list/tuple/str/dict/set(可迭代对象):
print(i)
break # 结束本层循环
3.for + continue
for i in range/list/tuple/str/dict/set(可迭代对象):
print(i)
if 条件:
continue # 结束本次循环,不执行下面代码
代码块
4.for + else
for i in range/list/tuple/str/dict/set(可迭代对象):
print(i)
else:
print('如果我没有被break,我就会被打印出来'
十二 数据类型内置方法
1 数字类型内置方法
1.整形
- 作用:定义年龄/身高/id号
- 定义方式:
age = 18 or age = int('18')
- 方法:
+ - * / % //
- 多个值or一个值:一个值
- 有序or无序:压根没有有序无序这一说
- 可变or不可变:不可变
- 可变:值变id不变
- 不可变:值变if也变
2.浮点型
- 作用:定义薪资/价格
- 定义方式:
salary = 3.2 or salary = float('3.2')
- 方法:
+ - * / % //
- 多个值or一个值:一个值
- 有序or无序:压根没有有序无序这一说
- 可变or不可变:不可变
2 字符串类型内置方法
- 作用: 姓名
- 定义方式:
name = 'sun' name = "sun" name = '''sun''' (三引号可换行)
- 方法:
- 优先掌握
- 索引取值
- 切片
- 长度
- 切分 split
- 除两端空白 strip
- 成员元素 in not in
- for循环
- 需要掌握
- lstrip rstrip
- rsplit
- upper/lower
- join
- replace
- indigit
- 了解
- find/rfind/index/rindex/count
- center/ljust/rjust/zfill
- expantabs
- capitalize/swapcase/title
- is系列
- 优先掌握
- 多个值or一个值:一个值
- 有序or无序:有序
- 可变or不可变:不可变
3 列表类型内置方法
- 作用:多个女朋友
- 定义方式:[]内用逗号隔开多个任意数据类型的元素
friends_list = ['sun','cheng','hao']
- 方法:
- 优先掌握:
- 索引取值(即可取又可改)
- 切片
- 长度
- append
- 成员运算
- for循环
- 需要掌握
- count
- remove
- reverse
- pop
- insert
- sort
- index
- del
- extend
- clear
- 优先掌握:
- 多个值or一个值:多个值
- 有序or无序:无序
- 可变or不可变:可变
4 元组类型内置方法
- 作用:类似于列表,可以取但不可以存
- 定义方式:()内用逗号隔开多个任意数据类型的元素
friends_tuple = ('sun','cheng','hao')
tup = tuple('sunchenghao')
- 方法:
- 优先掌握
- 索引取值(无法更改)
- 切片
- 长度
- 成员运算
- for循环
- count
- index
- 优先掌握
- 多个值or一个值:多个值
- 有序or无序:有序
- 可变or不可变:无可变不可变这一说
5 字典类型内置方法
-
作用:值太多列表存容易取麻烦时使用字典
-
定义方式:
-
sun_dict = { 'name':'sun', 'height':'190', 'weight':'200', 'hobby_list':['playing','run','sleep','money'] } for k,v in sun_dict.items(): print(k,v)
-
-
方法:
- 优先掌握
- 按键取值
- 长度
- keys/values/items
- for 循环
- 成员运算
- 需要掌握
- pop
- fromkeys
- setdefault
- get
- update
- del
- 优先掌握
-
多个值or一个值:多个值
-
有序or无序:无序
-
可变or不可变:可变
6 集合类型内置方法
-
作用:存多个值,为了集合之间做运算
-
定义方式:
-
s = set() #定义空集合 set = {1,2,3,4,5,2}
-
-
方法:
- 优先掌握
- 去重
- 并集 |
- 交集 &
- 差集 -
- 对称差集 ^
- 父集 > >=
- 子集 < <=
==
- 需要掌握
- add
- difference_update
- isdisjoint
- remove #值不存在会报错
- discard #不会报错
- 优先掌握
-
多个值or一个值:多个值
-
有序or无序:无序
-
可变or不可变:可变
7 布尔类型
- 作用:一般用于判断,除了 0/None/空/False 自带布尔值为false,其他数据类型自带布尔值为True
8 数据类型总结
一个值 | 多个值 |
---|---|
整形/浮点型/字符串 | 列表/元组/字典/集合 |
有序 | 无序 |
---|---|
字符串/列表/元组 | 字典/集合 |
可变 | 不可变 |
---|---|
列表/字典/集合 | 整形/浮点型/字符串 |
9 拷贝
拷贝/浅拷贝/深拷贝都是针对可变数据类型而言的
l1 = ['a','b','c',['d','e','f']]
l2 = l1
l1.append('g')
print(l1) #['a','b','c',['d','e','f'],'g']
print(l2) #['a','b','c',['d','e','f'],'g']
如何l2是l1的拷贝对象,则l1内部的任何数据类型的元素变化,则l2内部的元素也会跟着改变,因为可变类型值变id不变
10 浅拷贝
import copy
l1 = ['a','b','c',['d','e','f']]
l2 = copy.copy(l1)
l1.append('g')
print(l1) #['a','b','c',['d','e','f'],'g']
print(l2) #['a','b','c',['d','e','f']]
l1[3].append('g')
print(l1) #['a','b','c',['d','e','f','g'],'g']
print(l2) #['a','b','c',['d','e','f','g']]
如果l2是l1的浅拷贝对象,则l1内的不可变元素发生了改变,l2不变;如果l1内的可变元素发生了改变,则l2会跟着改变
11 深拷贝
import copy
l1 = ['a','b','c',['d','e','f']]
l2 = copy.deepcopy(l1)
l1.append('g')
print(l1) #['a','b','c',['d','e','f'],'g']
print(l2) #['a','b','c',['d','e','f']]
l1[3].append('g')
print(l1) #['a','b','c',['d','e','f','g'],'g']
print(l2) #['a','b','c',['d','e','f']]
如果l2是l1的深拷贝对像,则l1内的不可变元素发生了改变,l2不变;如果l1内的可变元素发生了改变,l2也不会变;即无论l2永远不会因为l1的改变而改变
标签:复习,name,运算符,l2,l1,print,7.9,Day,操作系统
From: https://www.cnblogs.com/chsun12/p/18452373