冯诺依曼体系结构
-
运算器:计算器中执行各种算术和逻辑运算操作的部件。
-
控制器:是计算机的神经中枢,指挥全机中各个部件自动协调工作。
-
存储器:用来存储数据和指令等的记忆部件。
-
输入设备:向计算机输入数据和信息的设备。
-
输出设备:是计算机硬件系统的终端设备,用于接收计算机数据的输出显示、打印、声音、控制外围设别操作等。
编程语言的分类
-
低级语言:机器语言、汇编语言(面向机器的语言)
-
高级语言:接近自然语言和数学语言的计算机语言
对字符串的操作
-
字符串插值
a = 100 b = 200 c = f `{a}, {b}` # f前缀,3.6新特性 print(c) --->100, 200
-
续行符
a = ('123\ # 在字符串后面添加\后回车,在下一行继续输入 456') print(a) --->'123456'
python标识符
-
标识符
-
由字母,下划线和数字组成
-
只能以字母或下划线开头
-
对大小写敏感
-
-
常量
python中没有常量,通常人们将全部大写的标识符当做常量
-
字面常量
一个单独的量,例如:1
解释型语言与编译型语言的区别
编译型语言:把源代码转换成目标机器的cpu指令
解释型语言:解释后将源代码转换为字节码,运行在虚拟机上,解释器执行中间代码
几种特殊的十六进制数字
0x31 —> 49
0x41 —> 65
0x61 —> 97
0x30 —> 48
0x7F —> 127
二进制数末尾是1,对应的十进制数一定是奇数
二进制转十进制的方法
例:0b1110 = 1*2**3 + 1*2**2 + 1*2**1 + 0*2**0 = 14
位运算操作符
- **&😗*是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位都为1时,结果位才为1。参与运算的两个数均以补码出现。
- **|:**只要对应的二个二进位有一个为1时,结果位就为1。
- **^:**当两对应的二进位相异时,结果为1。
原码,反码与补码
- 正数的原码 = 反码 = 补码
- 补码的补码就是原码
- 反码:符号位不变,其余按位取反
- 补码:符号位不变,其余按位取反,末尾加1
运算符优先级
- 算术运算符 > 比较运算符 > 逻辑运算符
- 单目运算符 > 双目运算符
真值表
对象/常量- | 值- |
---|---|
‘’ | 假 |
“string” | 真 |
0 | 假 |
>=1 | 真 |
<=-1 | 真 |
() | 假 |
[] | 假 |
{} | 假 |
None | 假 |
循环和分支
-
程序控制
分支:只要有一个分支被执行,其他分支就不会被执行
循环:条件满足就反复执行,不满足就不再执行
分支和循环结构可以嵌套使用
-
continue
- 跳过当前只一次循环,直接进入下一次循环
-
break
- 结束当前循环
# 计算1000以内被7整除的前20个正整数 count = 0 for i in range(7, 1000, 7): print(i) count += 1 if count >= 20: print(count) break
-
else子句
for i in range(2): print(2) else: print('end') --->0 1 end
python内置数据结构
-
分类
- 数值型
- int, float, complex, bool
- 序列
- 字符串str, bytes, bytearray
- 列表list, 元祖tuple
- 键值对
- 集合set
- 字典dict
- 数值型
数字的处理函数
- round()
- math.floor()
- math.ceil()
- min()
- max()
- pow()
列表
- 列表内的元素可以是任意对象(数字,字符串,对象, 列表等)
- 列表内元素是有序的,可以使用索引(index)查看
- 列表是可变的
- 列表是线性的数据节构(顺序结构)
- 列表是容器,容器都是可迭代对象
列表与链表的区别
- 列表在内存空间中以连续的空间存在,而链表不需要连续的内存空间
- 在列表中通过索引查找数据速度很快,但增加数据效率较低;相反,链表查找数据很慢,但增加数据效率很高
栈与队列
- 栈模型是后进先出,类似于从口袋里拿东西
- 队列模型是先进先出,类似于排队买票
几种操作列表的方法
-
list.index(value)
- 该方法可以查看元素在list中的索引,但效率较低。其原理为遍历list
-
list.count(value)
- 该方法可以统计value在list中的个数,属于完全遍历列表,效率很低,时间复杂度高。O(n)
-
len(list)
- 此方法可以显示list的长度。这个方法对效率影响较低。O(1)
-
list[index] = value
- 次方法可以修改列表中的元素
-
list.append()
- 向list尾部增加元素
-
list.insert(index, value)
- 可以向list任意位置插入元素
-
list.extend(value)
- 此方法相当于append,但可以一次性添加多个元素,append只能一次添加一个
-
append与insert的异同:
- 两种方法都无返回值,是就地修改
- append不可以越界,insert可以越界
-
[5] * 5 —> [5, 5, 5, 5, 5] 将列表中的元素重复五次,之后放在一个新的列表里
列表复制
- **浅拷贝:**遇到引用类型时,只是复制了一个引用
- **深拷贝:**创建了一个新的副本
删除列表元素
- list.remove(元素)
- 此方法会删除在列表里从左到右找到的第一个元素
- list.pop()
- 尾部弹出一个元素并返回。
- list.clear()
- 清空列表
- list.reverse()
- 翻转列表
列表排序
- list.sort(key=None, reverse=False)
- 此方法默认升序排列列表里的元素,降序将False改为True
随机数模块
- random.choice(list)
- 随机返回list里的一个元素
- random.shuffle(list)
- 打乱list里元素顺序
- random.randint(n, y)
- 随机返回[n, y]中的一个元素