计算机基础之编程
什么是编程语言
编程语言是人与计算机交流的介质
什么是编程
通过编程语言写一堆文件
为什么要编程
取代劳动力,帮人类干活
计算机组成
CPU
控制器
控制硬件
运算器
算数运算+逻辑运算
存储器
存储数据
主存
优点:速度快
缺点:容量小,断电即消失
外存
优点:容量大,永久存储
缺点:速度慢
输入设备
输入信息,如键盘/鼠标
输出设备
输出信息,如显示屏/打印机
应用程序的启动
32位和64位
计算机一次能处理的位数
多核CPU
同时刻完成多件事情
机械硬盘工作原理
机械手臂
读取数据
磁道
存储数据
扇区
划分磁道
平均寻道时间
5ms
平均延迟时间
4.15ms
平均寻找数据时间
9.15ms
计算机操作系统
什么是文件
操作系统提供的虚拟单位,虚拟单位用来存储数据
操作系统有什么用
把对硬件的复杂操作简单化
操作系统的启动
- 启动临时操作系统
- 临时操作系统启动真正的操作系统
- 启动操作性系统,关闭临时操作系统
编程语言的分类
机器语言
优点:执行速度快
缺点:开发效率慢
汇编语言
优点:开发效率高
缺点:执行效率低
高级语言
编译型语言
优点;执行效率高
缺点:开发效率低
解释型语言
优点:开发效率高
缺点:执行效率低
网络的瓶颈效应
网络数据延迟
变量
什么是变量
描述世间万物的状态(属性)
变量的三大组成
变量名(描述/接收变量值)赋值符号(=)变量值(具体的值)
变量名的命名规范
- 变量名有意义
- 数字/字母/下划线组成,不能以数字开头
- 不能以关键字命名(lis)
两种变量名的方式
- 驼峰提
- 下划线(推荐)
数据类型
数字类型
整型
- 作用:年龄
- 定义方式:int
- 使用方法:
+-*/ // % **
浮点型
- 作用:身高
- 定义方式:float
- 使用方法:
+-*/ // % **
字符串
- 作用:姓名
- 定义方式:str
- 使用方法:
-
索引取值
-
索引切片
-
成员运算
-
for循环
-
len长度
-
strip去两端字符/lstrip/rstip
-
startswith/endswith
-
split
-
count
-
find/index
-
join
-
center/ljust/rjust
-
replace()
s = 'tank sb'
s = s.replace('sb', 'dsb') # 替换
print(s)
-
列表
- 作用:存储多个元素
- 定义方式:list --》 []存放多个元素(任意数据类型)
- 使用方法
- 索引取值/索引修改值
- 索引切片
- 成员运算
- for循环
- len长度
- append
- sort
- reverse
- extend
- copy
- clear
- remove
- insert
字典
- 作用:键值对存储多个值
- 定义方式:{}内有多个键(字符串)值(任意数据类型)对
- 使用方法
- 按key取值
- 按key修改值
- 按key增加值
- keys
- values
- items
- get
- setdefault
- update
流程控制
流程控制之if判断
- 单分支结构if
- 双分支结构ifelse
- 多分枝结构if elif elif else
流程控制之for循环
for+break
中断本层循环
for+continue
中断本次循环,不执行下面的代码
for循环嵌套
for i in range(10):
for j in range(10):
文件处理
基本的文件操作
- 打开文件open
- 修改文件read/write
- 关闭文件close
文件的三种模式和2种方法
-
r 只读
-
w 只写(清空文件)
-
a 追加写入
-
t 文本模式
-
b 二进制模式
-
r+/w+(清空文件)/a+(不推荐使用)
with管理文件上下文
with open() as f:
f.read()
异常处理
try:
pass
except Exception as e:
print(e)
周作业
1. 有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中
即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}
a={'k1':[],'k2':[]}
c=[11,22,33,44,55,66,77,88,99,90]
for i in c:
if i>66:
a['k1'].append(i)
else:
a['k2'].append(i)
print(a)
2. 统计s='hello alex alex say hello sb sb'中每个单词的个数
结果如:{'hello': 2, 'alex': 2, 'say': 1, 'sb': 2}
s='hello alex alex say hello sb sb'
l=s.split()
dic={}
for item in l:
if item in dic:
dic[item]+=1
else:
dic[item]=1
print(dic)
3. 写代码,有如下变量,请按照要求实现每个功能
name = " aleX"
1) 移除 name 变量对应的值两边的空格,并输出处理结果
name = " aleX"
print(name.strip())
2) 判断 name 变量对应的值是否以 "al" 开头,并输出结果
name = " aleX"
print(name.startswith('al'))
3) 判断 name 变量对应的值是否以 "X" 结尾,并输出结果
name = " aleX"
print(name.endswith('X'))
4) 将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果
name = " aleX"
print(name.replace('l','p'))
5) 将 name 变量对应的值根据 “l” 分割,并输出结果。
name = " aleX"
print(name.split('l'))
6) 请输出 name 变量对应的值的第 2 个字符?
name = " aleX"
print(name[1])
7) 请输出 name 变量对应的值的前 3 个字符?
name = " aleX"
print(name[:3])
8) 请输出 name 变量对应的值的后 2 个字符?
name = " aleX"
print(name[-2:])
9) 请输出 name 变量对应的值中 “e” 所在索引位置?
name = " aleX"
print(name.index('e'))
10) 获取子序列,去掉最后一个字符。如: oldboy 则获取 oldbo。
name = " aleX"
a = name[:-1]
print(a)。
4. 假设有一个文件test.txt,内有如下内容
l=[
{'name':'alex','age':84},
{'name':'oldboy','age':73},
{'name':'egon','age':18},
]
需求:
1. 读取文件内容
2. 计算这三个人的年龄总和
1.with open(r'd:python project test.txt') as f:
data = f.read
print(data)
2.s = l[0]['age']
s1= l[1]['age']
s2= l[2]['age']
sum =s+s1+s2
print(sum)