信息复习笔记-Python基础

本文最后更新于:2 年前

我们首先来复习Python基础。

1.编程环境

编程是使用集成开发环境(IDE)。一般包括代码编辑器、调试器和图形用户界面工具。

解析:Python 开发包自带的 IDE 是 IDLE 。而 PyCharm 和 Eclipes 等则是第三方公司开发的专业级的 Python IDE 。

2.Python 常见数据类型

Python 常用数据类型有整型(int)、实型(float)、字符串型(str)和 布尔型(boolean)。

解析:

1
2
整形:1、-1、······	实型:1.0、-1.03.2、······	字符串型:'1'"hello你好""''"、······
布尔型:TrueFalse
3.Python 的基本运算与表达式

①基本运算:算术运算、关系运算和逻辑运算三大类。

②表达式:变量、常量、运算符和圆括号等按一定的规则组合构成一个表达式。

解析:算术运算

算术运算符 说明
+ 加法,2+3为5
- 减法,3-2为1
* 乘法,2×3.0为6.0
/ 除法,4/2为2.0
% 除余,5%2为1 余数计算公式:1 = 5 - 5 // 2 * 2
** 幂次,2**3为8
// 向下取整(即去掉小数点及其之后的所有值), 5//2为2

注意:①只要运算对象间有实型数据的,最后的运算结果也是一个实型。例如上面的 2*3.0 的结果不是 6 而是 6.0 。② / 的运算结果是实型。例如上面的 4/2 的结果不是 2 而是 2.0 。

关系运算 如果关系成立,返回True,否则返回False

关系运算符 说明
> 比较左侧值是否大于右侧值
>= 比较左侧的值是否大于或等于右侧的值
< 比较左侧值是否小于右侧值
<= 比较左侧的值是否小于或等于右侧的值
== 比较两个对象的值是否相等
!= 比较两个对象的值是否不相等

注意: 当对字符串进行比较(逐位比较)时,实际上比较的是字符串的编码。

逻辑运算

逻辑运算符 含义 基本格式 说明
and 逻辑与运算,等价于数学中的“且” a and b 当 a 和 b 两个表达式都为真时,a and b 的结果才为真,否则为假。
or 逻辑或运算,等价于数学中的“或” a or b 当 a 和 b 两个表达式都为假时,a or b 的结果才是假,否则为真。
not 逻辑非运算,等价于数学中的“非” not a 如果 a 为真,那么 not a 的结果为假;如果 a 为假,那么 not a 的结果为真。相当于对 a 取反。
4.变量与赋值

①变量:在程序运算过程中变量的值可以改变。为了能对变量进行访问需要对变量进行命名。在 Python 中,变量名可以包括字母、数字、下划线组成,但不能以数字开头,而且字母区分大小写,同时不能使用保留字。

②赋值运算符:“=” “-=” “+=” “*=” “/=” “%=” 等。

解析:Python 保留字 见下表,加下划线的保留字是我们已经学过的。

保留字 说明
and 逻辑与操作,用于表达式运算
as 用于转换数据类型
assert 用于判断变量或条件表达式的结果
async 用于启用异步操作
await 用于异步操作中等待协程返回
break 中断循环语句的执行
class 定义类
continue 继续执行下一次循环
def 定义函数或方法
del 删除变量或序列的值
elif 条件语句,与 if、else 结合使用
else 条件语句,与 if、else 结合使用;也可用于异常或循环语句
except 包含捕获异常后的处理代码块,与 try、finally 结合使用
False 含义为“假”的逻辑值
finally 包含捕获异常后的始终要调用的代码块,与 try、except 结合使用
for 循环语句
from 用于导入模块,与 import 结合使用
global 用于在函数或其他局部作用域中使用全局变量
if 条件语句,与 elif、else 结合使用
import 导入模块,与 from 结合使用
in 判断变量是否在序列中
is 判断变量是否为某个类的实例
lambda 定义匿名函数
None 表示一个空对象或是一个特殊的空值
nonlocal 用于在函数或其他作用域中使用外层(非全局)变量
not 逻辑非操作,用于表达式运算
or 逻辑或操作,用于表达式运算
pass 空的类、方法或函数的占位符
raise 用于抛出异常
return 从函数返回计算结果
True 含义为“真”的逻辑值
try 测试执行可能出现异常的代码,与 except, finally 结合使用
while 循环语句
with 简化 Python 的语句
yield 从函数依次返回值
5.字符串、列表和字典

①字符串:字符串常用单引号、双引号或三引号表示;字符串是不可变对象(即不能对字符串的某一位置进行赋值而改变字符串);通过索引来访问字符串的字符;通过切片操作可以获得字符串的一个子串。

②列表:用方括号“[]”表示,元素之间用逗号“,”分隔;由0个或多个元素组成的序列,其中的元素可以是数字、字符串、其他列表等混合类型的数据;列表的大小是可变的,可以根据需要扩大或缩小;列表中的元素可通过索引来定位。

③字典:字典可包含多个元素,每个元素包含两部分内容:键和值;键常用字符串或数值表示,值可以是任意类型的数据;键和值两者一一对应,且每个键只能对应一个值;字典中的元素是没有顺序的,引用元素时以键为索引。

解析:字符串切片实践 格式为:字符串名[ start : end : step ],step 缺省时默认为 1,start 缺省时,默认为 0。

1
2
3
4
5
6
7
s = '期中考试信息复习笔记'
s1 = s[2:4]
s2 = s[-8:-6]
s3 = s[3:1:-1]
print(s1)
print(s2)
print(s3)

控制台输出

控制台输出1

列表切片实践 格式为:list[i:j:k],i 为起始位置索引(包含),默认为0,j为终止位置索引(不含),默认至序列尾;k为切片间隔,默认为1。i,j,k使用默认值时可省略。

1
2
3
4
5
6
7
8
9
list = ['期','中','信','息','考','试']
list1 = list[2:4]
list2 = list[-4:-2]
list3 = list[:]
list4 = list[::-1]
print(list1)
print(list2)
print(list3)
print(list4)

控制台输出

控制台输出2

字典格式为 d = {key1:value1,key2:value2,···}

6.顺序结构的程序实现

①顺序结构的程序代码执行方式是自上而下、依次执行的。

②在 Python 中,“#”后面的内容为注释,主要对代码说明,并不执行。

③Python 常见的内建函数

函数 描述
print(x) 输出x的值
input() 获取用户输入
int(object) 将字符串和数字转换成整型
float(object) 将字符串和数字转换成实型
str(x) 将x转换成字符串
abs(x) 返回x的绝对值
help() 提供交互式帮助
len(seq) 返回序列的长度
chr(x) 返回x对应的字符
ord(x) 返回x对应的 ASCII 值
round(x[,n]) 对x进行四舍五入(如果给定n,就将数x转换为小数点后有n位的数)
max(s,[,args…]) 返回序列的最大值(如果给定多个参数,则返回给定参数中的最大值)
min(s,[,args…]) 返回序列的最小值(如果给定多个参数,则返回给定参数中的最小值)
7.Python 的缩进

①Python 中对缩进有严格要求,可以根据缩进来判断语句的从属关系。

②一般将语句块缩进4个空格。

8.循环结构的程序实现

①for 语句的格式

1
2
3
4
for <变量> in <序列>:
<循环体>
[else:
<语句块>]

for 语句通过遍历序列中的元素实现循环,并通过序列的元素数量来控制循环次数。

②while 语句的格式

1
2
while <条件>:
<循环体>

while循环时,首先判断条件是不是真,如果为真,执行一次循环体,再次判断条件是不是真,如果仍为真,那么再执行一次循环体,依次类推,直到条件为假时退出 while 语句。

③range 函数

range 函数由三个参数(起始值、终值、步长)来决定序列中元素的个数和范围。终值不能取到。

④break 语句

break 语句用来强行退出循环。

9.函数与模块

①定义函数的语法

1
2
3
def 函数名(参数集合):
<函数体>
[return 函数值]

②模块导入

import 语句或 from-import 语句。


一、Python 的基本运算优先级

1.算术运算符

运算符 ** * / // % + -
优先级 1 2 2 2 2 3 3

2.关系运算符

运算符 > < >= <= == != in
优先级 4 4 4 4 4 4 5

3.逻辑运算符

运算符 not and or
优先级 6 7 8

注意:数字越大,优先级越低,优先级相等时,按照自左向右的顺序执行。

二、常见的赋值方法
赋值方法 含义
a,b = 1,0 将数值 1 赋值给变量 a ,将数值 0 赋值给变量 b
a,b = ‘ab’ 将字符 ‘a’ 赋值给变量 a,将字符 ‘b’ 赋值给变量 b
a=b=c=22 将数值 22 分别赋给变量 a,b,c
[ a , b ] = [ 10 , 20 ] 将数值 10 赋值给 a,将数值 20 赋值给 b
三、函数与模块

1.math 模块中的常用常数与函数 使用时需要导入(import math)

名称 含义
math.e 自然常数e
math.pi 圆周率Π
math.ceil(x) 对x向上取整,比如x=1.2,返回2
math.floor(x) 对x向下取整,比如x=1.2,返回1
math.pow(x,y) 指数运算,得到x的y次方
math.log(x) 对数,默认基底为e
math.sin(x) 正弦函数,返回自变量为x下的函数值,下同
math.cos(x) 余弦函数
math.tan(x) 正切函数
math.degrees(x) 弧度转换成角度
math.radians(x) 角度转换成弧度

2.random 模块中的常用函数 使用时需要导入(import random)

名称 含义
random.random() 随机生成一个[0,1)范围内的实数
random.uniform(a,b) 随机生成一个[a,b]范围内的实数
random.randint(a,b) 随机生成一个[a,b]范围内的整数
random.choice(seq) 从序列的元素中随机挑选一个元素,比如:random.choice(range(10)),从0到9中随机挑选一个整数
random.sample(seq,k) 从序列中随机挑选k个元素
random.shuffle(seq) 将序列的所有元素随机排序
四、枚举算法

①基本思想:把问题所有可能的解一一列举,然后判断每一个列举出的可能解是不是正确的解。

②三个主要环节:枚举解(循环语句),筛选解(条件判断),输出解(或统计解的个数)。

③枚举算法的优化:尽可能缩小解的列举范围。

解析:枚举算法实践 找出x的所有乘积对

1
2
3
4
5
6
7
8
9
10
11
12
13
from datetime import datetime

x = 122222
sum = 0
start = datetime.now() # 系统当前时间
for i in range(x):
for j in range(i):
if i * j == x:
sum += 1
print('(', i, ',', j, ')')
end = datetime.now()
print('共有%s个乘积对' % sum)
print('查找时间:', (end - start))

控制台输出 (因数不分顺序)

控制台输出3

对上述算法进行优化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from datetime import datetime

x = 122222
sum = 0
start = datetime.now() # 系统当前时间
for i in range(x):
for j in range(i):
if i * j == x:
sum += 1
print('(', i, ',', j, ')')
elif i * j > x: # 如果乘积大于x,直接退出内层循环
break
end = datetime.now()
print('共有%s个乘积对' % sum)
print('查找时间:', (end - start))

控制台输出4

优化后的算法的运行时间竟压缩到了原算法运行时间的0.03187%,当x非常大时,效果将更加明显。


— 【参考资料 —— 《五三》和 网络文献】


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!