计算机基础之编程
什么是编程语言
编程语言是人与计算机交流的介质
什么是编程
通过编程语言编写一大堆文件
为什么要编程
奴役计算机,替代劳动力
计算机五大组成
CPU
控制器
控制硬件
运算器
算术运算和逻辑运算
内存
优点: 速度快
缺点: 断掉即消失,存储容量小
外存
优点:容量大,永久存储
缺点:速度慢
输入设备
输入信息,键盘/鼠标/u盘
输出设备
输出信息,显示屏/打印机/u盘
IO设备
u盘是io设备,既能输入信息,又可输出信息
应用程序的启动流程
- 双击qq(找到qq的路径)
- 操作系统发送指令给CPU
- CPU发送指令给内存
- 内存从外存中取出qq的代码
- 运行qq
32位和64位
电脑一次读取32/64个字节,64位的电脑能装32的软件,32的电脑不能装64位的软件,向下兼容性
多核CPU
3核CPU人类的三个头,同一时刻完成多件事情
机械硬盘工作原理
机械手臂:读取数据
磁道:存储数据
扇区:划分磁道
平均寻道时间:5ms
平均延迟时间:4.15ms
平均寻找数据时间:9.15ms
固态硬盘(了解)
基于电和算法实现的数据存储,不需要平均寻道时间,寻找数据时间是光速
计算机操作系统
什么是文件
操作系统提供的虚拟单位,用来存储数据
什么是应用程序
一堆文件
操作系统有什么用
把对硬件的复杂指令简单化
计算机的三大组成
硬件: 操作系统, 内存和外存的直接交互
操作系统:硬件/用户/应用程序
应用程序:操作系统
用户:操作系统
操作系统的启动
- 开机
- 启动临时的操作系统
- 临时的操作系统找到真正的操作系统的路径
- 启动真正的操作系统,临时操作系统关闭
编程语言分类
机器语言
优点:执行效率高
缺点:开发效率低
汇编语言
优点(相较于机器语言):开发效率高
缺点(相较于机器语言):执行效率低
高级语言
解释型语言(同声传译)
解释器都是用编译型语言写的
优点(相较于编译型语言):开发效率高
缺点(相较于编译型语言):执行效率低
编译型语言(谷歌翻译)
优点(相较于解释型语言):执行效率高
缺点(相较于解释型语言):开发效率低
网络的瓶颈效应
类似qq需要经常访问网络的程序,网络传输信息的延迟是远远大于程序执行的时间,程序执行的时间可以忽略不计
操作系统不需要网络的程序,用编译型更好
执行Python程序的两种方式
交互式
cmd写代码,不能永久保存代码,方便调试
命令行式
可以永久保存代码
变量
什么是变量
变量用来描述世间万物变化的状态
如何定义变量
x = 0
变量的组成
变量名: 接收变量值
赋值符号: 赋值的作用
变量值: 具体的数值
定义变量名的规范
- 变量名具有意义
- 变量名由数字/字母/下划线组成,首字母不能为数字,也不能为_(如果为了就是不要引用的意思)
变量名的两种命名风格
- 驼峰体
- 下划线(建议使用)
常量
不变的量,变量名全大写,但在Python中是可以变化,这只是程序员约定俗成的,
Python变量内存管理
引用计数
新定义一个变量,开辟一块内存空间,引用计数1x=1
变量值多加了一个引用,引用计数加1y=x
删除一个引用,引用计数减1del x
垃圾回收机制
变量值的引用计数为0的时候,释放变量值的内存空间
小整数池
[-5,256]的整数不会被垃圾回收机制回收,因为PYthon解释器启动的时候就会自动开辟一块内存空间放入这些整数
花式赋值
链式赋值
x=y=10
交叉赋值
x = 10
y = 20
x, y = y, x
z = x
x = y
y = z
注释
单行注释
注释取消代码的意义,变成普通的字符
解释代码的意思
多行注释
'''
数据类型基础
为什么要有数据类型
不能用单一的数据类型描述世间万物,所以多种数据类型
解压缩
lis = [1,2,3]
x,y,z = lis
# x = 1, y = 2, z = 3
Python与用户交互
input()
input接收的所有值都是字符串
Python格式化输出的三种方式
占位符%
'%s'%'nick'
format格式化
'{}'.format('nick')
f-string格式化
f"{'nick'}"
基本运算符
算术运算符
+-*/ % // **
逻辑运算符
and or not
比较运算符
> >= < <= == !=
赋值运算符
= += -= *= /= //= %= **=
身份运算符
is
is not
运算符的优先级
优先的加括号就行
流程控制之if判断
单分支结构
if <条件>:
<代码块>
双分支结构
if <条件>:
<代码块1>
else:
<代码块2>
多分支结构
if <条件1>:
<代码块1>
elif <条件2>:
<代码块2>
...
else:
<代码块3>
if嵌套
if <条件1>:
<代码块1>:
if <条件2>:
pass
流程控制之while循环
while + break
跳出本层循环
while + continue
跳出本次循环
while + else
判断循环有没有被break,被break不执行else
while嵌套
while <条件1>:
while <条件2>:
pass
流程控制之for循环
for + break
for + continue
for + else
for循环嵌套
有序or无序
有索引的就有序,无索引的就无序
可变or不可变
值变id也变的是不可变
值变id不变的是可变