一、预备基础知识
1.1:计算机的组成
1.2:计算机编程语言分类
机器语言:直接用二进制代码表示,由0和1组成;
汇编语言:使用助记符来表示机器指令;
高级语言:使用人类语言编写;
1.3:高级编程语言的分类
1.3.1:按实现方式,分为编译型语言和解释型语言:
【编译型语言】如C语言,需要将源代码编译成机器码再执行;
【解释型语言】如Python,运行时由解释器逐行解释执行;
1.3.2:按编程方式,分为面向对象语言和面向过程语言:
【面向对象语言】如Java语言,支持封装、继承和多态等概念;
【面向过程语言】如C语言,以函数为主要构成单元;
1.4:机器语言中二进制的概念
1.4.1:二进制的三要素
包括:数码、基数、位权
进制类型 | 数码 | 基数 | 位权 |
十进制 | 0~9 | 10 | ...10^2, 10^1,10^0, 10^-1, 10^-2... |
二进制 | 0,1 | 2 | ...2^2, 2^1, 2^0, 2^-1, 2^-2... |
八进制 | 0~7 | 8 | ...8^2, 8^1, 8^0, 8^-1, 8^-2... |
十六进制 | 0~9,a,b,c,d,e,f | 16 | ...16^2, 16^1, 16^0, 16^-1, 16^-2... |
1.4.2:二进制的表示方式
进制 | 前缀法 | 后缀法(易识别错误,不选用) |
十进制 | 1234 | 1234D |
二进制 | 0b110,0B110 | 110B |
八进制 | 0o1234,0O1234 | 1234O |
十六进制 | 0x1234, 0X1234 | 1234H |
1.4.3:不同进制之间的转换
方法1:除N取余,逆向排列
方法2:位权展开相减法
1.4.4:二进制与八进制转换
二进制转八进制:三合一
八进制转二进制:一拆三
方法如下列表所示:
二进制 | 0b11110110 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 |
八进制 | 0o366 | 3 | 6 | 6 |
1.4.5:二进制与十六进制转换
二进制转十六进制:四合一
十六进制转二进制:一拆四
方法如下列表所示:
二进制 | 0b11110110 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 |
十六进制 | 0xf6 | f | 6 |
1.4.6:二进制的原码、反码、补码
数据在存储的时候,有正数也有负数,因此涉及到原码、反码、补码。
因为计算机中数据的计算都是以“补码”形式参与的。
【原码】:给人看的,直接转换得到;
【反码】:用来做原码与补码之间转换的中间者;
【补码】:给计算机看的;
正数中:原码=反码=补码,即自身的二进制;
负数中:
原码:最高位代表符号位(0表正,1表负),其他位是自身二进制;
反码:最高位代表符号位(0表正,1表负),其他位对原码按位取反(0变1,1变0);
补码:最高位代表符号位(0表正,1表负),其他位对反码加1;
如下展示的示例题:
【示例题1】:
【示例题2】:
按照计算机的加法器,计算5-9,演示过程: | |||||||||
5 | 补码 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
-9 | 补码 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 |
5+(-9)补码 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | |
反码 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | |
原码 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | |
结果 | 负 | 4 |
二、Python基础语法
2.1:代码行
Python每句代码行不以分号结尾,独立的一行就是一行语句;
语句过长时,可以回车换行或者使用 续行符 \ 进行分割。
2.2:缩进
在Python中,用缩进来表示代码段,一般以Tab键或者4个空格,但必须统一。
2.3:注释
作用:解释说明,增加可读性;
单行注释:使用 #号,后面写入描述,可单行注释,也可以添加在语句末尾,快捷键:ctrl + /
多行注释:以三个单引号或三个双引号括起来,一般多用于函数,类,文档的说明;
2.4:变量
定义:在程序运行过程中可以修改的量
语法格式:变量名 = 赋值 / 数据
数据类型:数值Number,字符串String,列表List,元组Tuple,集合Set,字典Dict;
变量三要素:
id 内存地址
value 值
type 类型
2.5:标识符
用于给变量,函数,类,对象等命名的符号;
标识符规范:由字母、数字、下划线组成,严格区分大小写;
不能以数字开头;
不能包含关键字;
使用驼峰命名法(MyName)或连字符法(my_name),见名识意;
2.6:关键字
Python中预留了一些特殊含义的单词,不能作为标识符使用。
关键字特征:预定义,无需外部导入;不可变,不可以重新定义或修改。
# 查看python关键字以及数量
import keyword
print(keyword.kwlist)
print(len(keyword.kwlist))
2.7:数据类型
2.7.1:数值型Number
int型:正整数,负整数,0
float型:小数,浮点数,实数
complex型:复数,由实部和虚部组成,如:3+5j
bool型:布尔值,只有两个值:True,False(首字母大写)
2.7.2:字符串String
字符串是一系列文本,使用单引号或双引号括起来;
同时,可以使用 \ 进行转义字符的处理。
转义字符:
\' 单引号
\" 双引号
\t tab制表符
\n 回车换行
2.7.3:列表List
一组数据放在 [ ] 里面,元素之间用逗号隔开;
2.7.4:元祖Tuple
一组数据放在 ( ) 里面,元素之间使用逗号隔开;
2.7.5:集合Set
一组数据放在 { } 里面,元素之间使用逗号隔开
2.7.6:字典Dict
一种映射类型,可以进行索引查看,由键值对组成
2.8:运算符
2.8.1:基本运算符
算术运算符 | + 加 - 减 * 乘 / 除 // 商 % 余(模运算) ** 乘方 | 混合运算时,遵循优先级; ** 高于 *, / ,// ,% ,高于 +, - 若记不住,直接加 ( ) 增加优先级 |
赋值运算符 | 简单赋值 = 复合赋值运算符 += -= *= /= //= %= **= | 复合赋值运算,先运算再赋值 例如: a = 12 print(a) a += 12 print(a) |
比较运算符 | > 大于 < 小于 == 等于 >= 大于等于 <= 小于等于 != 不等于 | 比较运算符的比较结果是布尔值, 即两个值 True 和 False |
逻辑运算符 | and 逻辑与 or 逻辑或 not 逻辑非 | 逻辑与:全真为真、遇假则假; 逻辑或:全假为假、有真即真; 逻辑非:非真即假、非假即真; 逻辑运算结果为布尔值:True 和 False |
位运算符 二进制 | & 位与 | 位或 ^ 异或 ~ 取反 << 左移 >> 右移 | 1&0 = 0,1&1 = 1,0&1 = 0 位与:全1为1,有0则0; 1|0 = 1,0|1 = 1,0|0 = 0,1|1 = 1 位或:全0为0,有1则1; 1^0 = 1,0^1 = 1,1^1 = 0,0^0 = 0 异或:相同为0,不同为1; ~1 = 0,~0 = 1 取反:结果相反 110110 110110 >> 2 = 00 1101 |
2.8.2:运算符的优先级
() | 圆括号内的表达式拥有最高优先级 |
** | 乘方运算 |
*,/,%,// | 算术运算符,先乘除 |
+,- | 算数运算符,后加减 |
<<,>> | 位运算符,左移与右移 |
& | 位运算符,按位与 |
^ | 位运算符,按位异或 |
| | 位运算符,按位或 |
>,<,>=,<=,==,!= | 比较运算符 |
and,or | 逻辑运算符 |
=,+=等 | 赋值运算符优先级最低 |