当前位置:   article > 正文

python基础总复习_python理论复习

python理论复习

Python基础班总复习

一、Python基础语法

1、注释概念

单行注释 #

多行注释 ''' 注释内容 ''',支持换行 => 在实际工作中,主要用于实现函数说明文档

2、变量的概念

场景:保存数据,所以理论上有数据的地方都有变量!

变量名称 = 变量的值

注意:=日常生活中的=,在程序中并不是等于的意义,而是赋值运算符,其执行顺序比较特殊,由右向左进行运算。

重点:变量名称规则

==① 由数字、字母、下划线(_)组成==

==② 不能数字开头==

==③ 严格区分⼤小写==

==④ 不能使⽤内置关键字作为变量名称==

if/while/for/def/list/tuple...

技能:看到一个变量,100%能够知道它是否为合法变量名称!

变量输出 => print() => 函数

print(name)

print(age)

print(address)

print(name, age, address) # name age address显示的时候,两两之间都有一个空格

案例:两个变量值的交换

① 引入第三方变量

② 使用元组拆包a, b = b, a

3、变量数据类型

变量一共有7种基本数据类型:==数值类型、布尔类型、字符串类型、列表、元组、字典、集合==

还可以强制分为两大类:可变数据类型 与 非可变数据类型

==列表、字典、集合==(可变数据类型)

==数值、布尔、字符串、元组==(不可变数据类型)

4、Python输入与输出

input() : 在实际工作中,主要用于接收数据

注意:① input()任何时候返回的数据类型都是str字符串

​ ② input()方法具有代码阻塞功能(相当于给程序按了一个暂停键)

print()方法 => 格式化输出,把Python中的变量按照指定格式进行输出显示

① 百分号形式的格式化输出

  • %s :字符串

  • %d :整数

  • %f :浮点数

如果想在百分号格式化输出时,在输出一个%,则print('%%')

② .format()形式的格式化输出

③ f简写形式的格式化输出(后期使用推荐)

二、数据类型转换与if分支结构

1、数据类型转换

实际工作中,为什么需要数据类型转换?Python数据类型较多,经常需要进行相互转换操作。

int() :把其他数据类型转为int整数类型

float() :把其他数据类型转换为float浮点类型

str() :把其他数据类型转换为str字符串类型

eval() :把字符串转换为其他原数据类型(eval方法必须要发生类型转化,否则报错)

eval('[{}, {}, {}]') => list列表

list() : 把其他类型转换为列表类型

tuple() :把其他数据类型转换为tuple元组类型

set() :把其他数据类型转换为集合?因为集合可以天生去重

常见的类型转换 => input() => 字符串类型

2、Python中的运算符

简单来说,他们就是日常生活中的加减乘除操作

☆ 算数运算符

所谓的算数运算符就是我们日常生活中的加减乘除等待。

运算符描述实例
+1 + 1 输出结果为 2
-1 - 1 输出结果为 0
*2 * 2 输出结果为 4
/10 / 2 输出结果为 5
//整除9 // 4 输出结果为 2
%取余(取模)9 % 4 输出结果为 1
**幂指数2 ** 4 输出结果为 16,即2的4次方,2 * 2 * 2 * 2
()小括号小括号用来提高运算优先级,即 (1 + 2) * 3 输出结果为 9

%取模运算:数7游戏

数字变量 % 7 == 0 代表7的倍数

数字变量 % 10 == 7代表尾数7

**幂指数 => 优先级仅仅次于()小括号

☆ 赋值运算符

只有一个符号,就是=,把右边的结果或表达式赋值给左边的变量

a = 10

b = 1 + 2

a = b = 1

a, b, c = 1, 2, 3

☆ 复合赋值运算符 = 算数 + 赋值

复合赋值运算符 = 算术运算符 结合 赋值运算符

把右边的值(先进行算数的结果)赋值给左边的变量

易错点:

左边不能是一个具体的值,必须是一个变量

先进行算数,然后把结果赋值给左边的变量,最后打印都要打印左边的变量

在实际工作中,i += 1或i += 2

特别注意:在Python代码中,没有++和--操作,i++,i--,++i,--i

☆ 比较运算符

返回布尔类型的数据(要么True,要么为False),主要配合if语句一起使用

☆ 逻辑与或非

and代表与:必须保证两边同时为True,则最终结果为True,反之,则返回False

or代表或:只要有一边结果为True,则最终结果为True,反之,则返回False

not非:取反,文件操作

content = f.readline()

if not content:

​ break

3、if分支结构

三大结构 + if嵌套

① 顺序结构 ② 选择结构(分支结构)③ 循环结构

if 条件判断:
    缩进代码
if 条件判断:
    缩进代码
else:
    缩进代码
if 条件判断:
    缩进代码
elif 条件判断:
    缩进代码
elif 条件判断:
    缩进代码
else:
    缩进代码

4、综合案例:猜拳游戏

角色:玩家player,电脑computer

if 玩家获胜条件:

​ 玩家获胜

elif player == computer:

平局

else:

​ 电脑获胜

新知识点:随机出拳 => 随机模块

import random
​
random.randint(起始位置, 结束位置)  # 随机,目前位置唯一一个包含头部也包含尾部函数

5、三目运算符

条件成立,返回左边内容 if 条件判断 else 条件不成立,则返回右边内容

三、Python中的循环结构

1、循环作用?

让代码高效重复的执行,在Python中,循环主要有两种形式:① wihle循环 ② for循环

while循环:适合实现执行次数的循环

for循环:适合实现对数据容器的遍历操作,当前在代码层面for循环可以代替while循环

但是在性能方面,while循环要明显高于for循环

2、while循环三步走

# 定义计数器
i = 0或i = 1
# 编写循环条件
while i < 100:
    # 开始编写自己要循环的代码
    print('正在重复执行某个操作')
    
    # 在循环体内部更新计数器的值
    i += 1

3、关键词:break与continue

两者都可以退出循环,但是退出方式不同

break:强制中止整个循环结构

continue:中止本次循环,继而进入下一次循环

4、新知识点:累加求和,偶数求和,奇数求和

i = 1
sum = 0
while i <= 100:
    sum += i
    i += 1
    
i = 1
sum = 0
while i <= 100:
    if i % 2 == 0:
        sum += i
        
    i += 1
    
i = 1
sum = 0
while <= 100:
    sum += i
    i += 2
    
1  3  5  7  9

5、死循环

① 由于程序错误产生的,没有更新计数器,while...continue,continue前面没有进行更新计数器

② 人为构建死循环while True,但是while True本身没有意义,必须和input()语句结合

6、for循环

for循环主要用于实现对容器(字符串、列表、元组、字典、集合)的遍历操作

for 临时变量 in 数据容器:
    print(临时变量)

7、for循环+range()代替while循环

range(start, stop, step)  : 只顾头不顾尾
​
range(1, 101, 1) : 返回容器,容器中包含[1-100]

遍历3次:

for i in range(3):  # 0 1 2
    print(i)

8、break与continue

效果与while循环中break与continue完全一致的。

break:终止整个循环结构

continue:中止本次循环,继而进入下一次循环

无论是break还是continue都只能中止最近一次循环,如果是多层循环,只能中止一层

9、重点案例:用户名和密码登录验证

案例:用for循环实现用户登录

① 输入用户名和密码

② 判断用户名和密码是否正确(username='admin',password='admin888')

③ 登录仅有三次机会,超过3次会报错

简单版本:

for i in range(3):
    username = input('请输入您的用户名:')
    password = input('请输入您的密码:')
    
    if username == 'admin' and password = 'admin888':
        print('登录成功')
        break
    else:
        print('登录失败')

复杂版本:

trycount = 0
for i in range(3):
    trycount += 1
    username = input('请输入您的用户名:')
    password = input('请输入您的密码:')
    
    if username = 'admin':
        if password == 'admin888':
            print('登录成功')
            break
        else:
            print('密码输入错误,请重新输入')
            print(f'您还剩余{3-trycount}次机会')
    else:
        print('用户名输入错误,请重新输入')
        print(f'您还剩余{3-trycount}次机会')

10、for循环中的else结构

for i in 数据容器:
    ...
else:
    ...

要说明:什么时候执行else结构

答:当循环正常结束以后,系统会自动执行else中的代码(只会执行1次)

什么是正常结束呢?

在整个循环过程中,没有遇到或者没有执行break。

学生管理系统中的判断:

name = input('请输入要删除同学的名称:')
for i in students:
    if i['name'] == name:
        students.remove(i)
        break
else:
    print('您要删除的同学不存在!')

四、Python中的数据容器

1、有哪些数据类型统称容器

字符串、列表、元组、字典以及集合

2、字符串定义

单引号或双引号

新知识点:三引号定义字符串(支持换行)

content = '''
    关关雎鸠,
    在河之洲,
    窈窕淑女,
    君子好逑。
'''

3、字符串输入输出

字符串变量 = input()

print(name)

print(name, address)

格式化输出 => 百分号、format以及f简写形式

4、字符串索引下标以及求字符串长度

str1 = 'hello'

str1[索引编号] = h e l l o

索引下标 => 字符串、列表、元组,默认从0开始

len(字符串/列表/元组/集合) :求容器的长度

5、字符串切片(考点、应用重点)

① 绘制图像(正索引、负索引、数据)

② 背口诀:切片其实很简单,只顾头来尾不管,步长为正正向移,步长为负则逆向移

记住一件事:到底从左向右数,还是从右向左数,重点看步长

numstr = '0123456789'
# 1、从2到5开始切片,步长为1
print(numstr[2:5:1])
print(numstr[2:5])
# 2、只有结尾的字符串切片:代表从索引为0开始,截取到索引为5的位置(不包含索引为5的数据)
print(numstr[:5])
# 3、只有开头的字符串切片:代表从起始位置开始,已知截取到字符串的结尾
print(numstr[1:])
# 4、获取或拷贝整个字符串
print(numstr[:])
# 5、调整步阶:类似求偶数
print(numstr[::2])
# 6、把步阶设置为负整数:类似字符串翻转
print(numstr[::-1])
# 7、起始位置与结束位置都是负数
print(numstr[-4:-1])
# 8、结束字符为负数,如截取012345678
print(numstr[:-1])

6、字符串相关方法

查找指定关键词:

find(),扩展:rfind()代表从左向右查找,查找关键词最后一次出现的位置,找到返回-1

字符串替换方法:

replace(旧关键词, 新关键词),由于字符串属于非可变数据类型,所以replace不会对原有字符串产生任何影响

split() : 把字符串切割成列表

join() :把一个数据容器(如列表)拼接为一个字符串

isdigit() :判断一个字符串是否全部由数字组成

user_num = input('请输入您的操作编号:')

if user_num.isdigit():

​ user_num = int(user_num)

五、Python中列表数据类型

1、定义一个列表

列表名称 = [元素值1, 元素值2, 元素值3]
​
list1 = ['apple', 'banana', 'pineapple']
# list列表类型支持直接打印
print(list1)
# 打印列表的数据类型
print(type(list1))  # <class 'list'>

2、列表访问

列表名称[索引下标]  # 0, 1, 2, 3
print(列表名称)
​
遍历操作:
i = 0
while i < len(列表名称):
    print(列表名称[i])
    i += 1
    
for i in 列表名称:
    print(i)

3、必须要记住的关键点

① 添加数据,append()

② 删除数据,remove()根据值删除元素

③ 修改操作 => 列表名称[索引下标] = 值

④ 查询,查看遍历

in 判断指定数据在某个列表序列,如果在返回True,否则返回False

了解列表的嵌套:

[[], [], []]

演变为多种形式:学生管理系统[{}, {}, {}]

pyecharts数据可视化:[(), (), ()]

六、Python中的元组数据类型

1、元组概念

和列表类似,都可以用于保存多个数据。但是两者又有所不同,元组中的数据一旦定义就不能进行修改和删除了,起到保护数据的目的!

2、元组的定义

tuple1 = (1, )

tuple2 = (1, 2, 3, 4)

3、元组只能定义,不能修改与删除

所以其方法主要是查询方法

编号函数作用
1元组[索引]根据==索引下标==查找元素
2len()统计元组中数据的个数

列表、元组的时候还给大家做过一个扩展:如何开发一个点名程序

七、Python中字典数据类型

1、为什么需要字典?

字典适合数据的保存与查询操作,经常我们使用字典来保存一个事物的信息,如一个人、一本书、一个商品信息

person = {key:value, key:value, key:value}
注意:字典中key必须是唯一的,但是value值可以重复。

2、字典的定义

字典变量 = {}
或
字典变量 = dict()
​
有数据的变量 = {key:value, key:value}
如果key是字符串类型,必须使用引号引起来
key可以是很多种数据类型、数值类型(相同值算同一个key)、字符串类型、布尔类型、元组类型

3、字典的增删改查

① 增加与修改操作

字典名称[key] = value

② 删除操作

del 字典名称[key]

注意:删除的是一个key:value键值对

③ 查询数据

print(字典名称[key])

编号函数作用
1keys()以类列表返回一个字典所有的键
2values()以类列表返回字典中的所有值
3items()以类列表返回可遍历的(键, 值) 元组数据

4、通讯录管理系统

主要实现了添加与查询功能

八、Python中的集合类型

1、什么是集合?哪些特点?

集合是一组数据的集合内容,天生去重(无序)

2、定义集合

set1 = set()
​
set2 = {1, 2, 3, 4, 5}

3、增加、删除与查询

set1.add(数据)

set1.pop() :随机删除

set2.remove() :根据提供的参数删除元素

in与not...in :判断集合中是否存在这个元素

九、数据容器的公共方法

1、什么是公共方法

所谓的公共方法就是支持大部分数据序列。

2、常见公共方法

运算符描述
+合并
*复制
in元素是否存在
not in元素是否不存在
max()返回容器中的最大值
min()返回容器中的最小值

str1 = 'hello'

str2 = 'world'

print(str1 + str2)

print('-' * 40)

max(数据容器)

min(数据容器)

3、容器类型之间的相互转换

list()方法:把某个序列类型的数据转化为列表

# 1、定义元组类型的序列
tuple1 = (10, 20, 30)
print(list(tuple1))
​
# 2、定义一个集合类型的序列
set1 = {'a', 'b', 'c', 'd'}
print(list(set1))

tuple()方法:把某个序列类型的数据转化为元组

# 1、定义一个列表类型的数据
list1 = ['a', 'b', 'c', 'd']
print(tuple(list1))
​
# 2、定义一个集合类型的数据
set1 = {10, 20, 30, 40}
print(tuple(set1))

set()方法:将某个序列转换成集合(但是要注意两件事 => ① 集合可以快速完成列表去重 ② 集合不支持下标)

# 1、定义一个列表类型的数据
list1 = ['a', 'b', 'c', 'd', 'a']
print(set(list1))
# 2、定义一个元组类型的数据
tuple1 = (10, 20, 30, 40)
print(set(tuple1))

十、Python中的函数

1、函数的作用?

① 代码重用

② 模块化编程(学生管理系统)

2、函数的说明

函数时一个被命名的、独立的、完成特定功能的一段连续的代码,并可能给调用它的程序一个返回值。

3、函数的定义

def 函数名称(参数列表):
    函数体代码
    return 返回值
​
在函数定义时,其代码并没有真正的执行,只有在函数调用时代码才真正的被执行。
​
调用函数:
函数名称(参数)

4、聊聊return返回值

① 在一个函数中,可以同时拥有多个返回值,但是只有第一个返回值会起作用

return 1

return 2

函数一旦遇到了return,则会自动结束。返回return后面的结果

② 在Python中,函数允许同时返回多个结果,如return 1, 2, 3 , 这个结果通常是一个元组形式

5、元组拆包

其实拆包不仅可以用于元组,还可以用于列表与字典。

a, b = (1, 2)

实现两个变量值的交换!

6、重点:函数的说明文档

def func():
    '''
        编写函数功能
        @param1 第一个参数
        @param2 第二个参数
        @return 返回值
    '''
    return 返回值
​
​
help(func)
​
Ctrl + Q

7、函数相关案例二则

案例1:

'''
编写一个函数,有一个参数str1,输入信息如'1.2.3.4.5',使用函数对其进行处理,要求最终的返回结果为'5-4-3-2-1'
'''
def func(str1):
    str2 = str1[::-1]
    return str2.replace('.', '-')
​
​
print(func('1.2.3.4.5'))

案例2:生成4位长度验证码

'''
定义一个函数,用于生成4位长度的验证码。
升级
定义一个函数,用于生成指定长度的验证码。
'''
def func(num):
    # 定义一个字符串
    str1 = '23456789abcdefghijkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'
    code = ''
    # 从字符串中通过随机索引选择一个元素
    import random
    # 循环4次
    for i in range(num):
        randnum = random.randint(0, len(str1) - 1)
        code += str1[randnum]  # '' => 'a' => '6' => 'J' => 'X' => a6JX
    return code
​
​
print(func(4))

8、变量作用域

# 全局作用域
def func():
    # 局部作用域

局部变量与全局变量

在Python中,定义在函数外部的变量就称之为全局变量;定义在函数内部变量就称之为局部变量。

# 定义在函数外部的变量(全局变量)
num = 10
# 定义一个函数
def func():
    # 函数体代码
    # 定义在函数内部的变量(局部变量)
    num = 100

全局变量既可以在全局访问也可以在局部访问

局部变量只能在函数内部(局部作用域中访问),不能在全局作用域中访问

# 定义一个函数
def func():
    # 在函数内部定义一个局部变量
    num = 10
    print(f'在局部作用域中调用num局部变量:{num}')
​
# 调用func函数
func()
# 在全局作用域中调用num局部变量
print(f'在全局作用域中调用num局部变量:{num}')

9、global关键字

思考一个问题:我们能不能在局部作用域中对全局变量(非可变数据类型)进行修改呢?

# 定义全局变量num = 10
num = 10
# 定义一个函数func
def func():
    # 尝试在局部作用域中修改全局变量
    num = 20
​
# 调用函数func
func()
# 尝试访问全局变量num
print(num)  # 10

函数内部的局部变量即使和函数外部的全局变量同名,也不会对其产生任何影响。因为全局和局部独立的,内部的局部影响不到全局。

添加global关键字,相当于声明全局变量,代表从这以后,我们使用的这个变量就是全局变量。

# 定义全局变量num = 10
num = 10
# 定义一个函数func
def func():
    # 尝试在局部作用域中修改全局变量
    global num
    num = 20
​
# 调用函数func
func()
# 尝试访问全局变量num
print(num)

10、函数的参数进阶

在函数定义与调用时,我们可以根据自己的需求来实现参数的传递。在Python中,函数的参数一共有两种形式:① 形参 ② 实参

==形参:在函数定义时,所编写的参数就称之为形式参数==

==实参:在函数调用时,所传递的参数就称之为实际参数==

① 函数调用时参数可以划分为两种调用形式:位置参数 + 关键词参数

def func(num1, num2, num3):

​ pass

位置参数:

func(1, 2, 3)

关键词参数:

func(num1=1, num2=2, num3=3)

如果位置参数与关键词参数同时出现,则位置参数必须放左边,关键词参数必须放右边

② 参数的默认值

def func(name, age, gender='male'):
    pass
​
普通参数, 默认值参数
​
func('Tom', 23)
func('Harry', 19, 'female')

③ 不定长参数(变化参数)

*args :固定语法,不定长位置参数(返回结果是一个元组)
**kwargs :固定语法,不定长关键词参数(返回结果是一个字典)
​
args 和 kwargs:变量

func()

func(1, 2)

func(1, 2, 3)

不定长参数案例:

'''
*args :固定语法,不定长位置参数(返回结果是一个元组)
**kwargs :固定语法,不定长关键词参数(返回结果是一个字典)
可以配合在一起使用,但是*args必须放前面,**kwargs必须放后面
'''
# 要求编写一个函数求出1+2+3+4+5的结果
def func(*args, **kwargs):
    sum = 0
    for i in args:
        sum += i
    for v in kwargs.values():
        sum += v
    print(sum)
​
​
list1 = [1, 2, 3]
dict1 = {'a':4, 'b':5}
​
func(*list1, **dict1)

如果多个参数混用,有顺序要求:

def func(① 普通参数 ② *args ③ 默认值参数 ④ **kwargs):

​ pass

十一、可变与非可变数据类型

1、结论

可变类型:列表、字典、集合

非可变类型:数值、布尔类型、字符串类型、元组

2、什么是不可变数据类型

内存地址一旦固定,其值就不能发生改变了。

3、什么可变数据类型

内存地址一旦固定,其值是可以发生改变的。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/531525
推荐阅读
相关标签
  

闽ICP备14008679号