如果哪里有错的或者需要补充的,欢迎留言
python期末复习
绪论
1.1 Python 开发环境
区分 Python 解释器和 Python 集成开发环境。了解常见的 Python 集成开发环境有那些?
IDLE
PyCharm
Anaconda3
Jupyter Notebook
Spyder
Eclipse
Python 3.8
Python 3.10
下述 Python 集成开发环境中,谁可以同时配置和使用自由切换不同的 Python 版本?
IDLE
PyCharm
Anaconda3
Jupyter Notebook
Spyder
Eclipse
Python 3.8
Python 3.10
在上述的Python集成开发环境中,只有Anaconda3和Jupyter Notebook可以同时配置和使用自由切换不同的Python版本。
1. Anaconda3:Anaconda是一个开源的Python发行版,它包含了conda、Python等180多个科学包及其依赖项。Anaconda支持在同一系统上安装和管理多个Python环境,每个环境都可以有自己的Python版本和库。用户可以在不同的环境中自由切换Python版本。
2. Jupyter Notebook:Jupyter Notebook是一个交互式的编程环境,支持多种编程语言,包括Python。在Jupyter Notebook中,你可以创建一个新的notebook,然后在其中选择要使用的Python内核(即Python版本)。你可以选择已经安装的Python环境,也可以添加新的Python环境并安装所需的库。
其他IDE如IDLE、PyCharm、Spyder和Eclipse也支持Python,但它们并不直接支持在同一IDE中切换Python版本。在这些IDE中,你需要为每个项目单独安装和管理Python版本。
语法基础
2.1变量及其赋值
2.2 变量的命名规则
Python 变量的命名规则是什么?
字母、数字、下划线
错误命名:
-
123n #不能以数字开头
-
-study #不能使用短横线
-
continue #不能跟关键字相同
-
my+title #不能包含除了数字、英文字母和下划线以外的字符
2.3 Python 对象和引用
2.4 Python 常用的运算符
区分 or 和 and,能自行举例进行说明描述。分析其短路求值特性。
>>> 1 or 2 #输出:1 第一个为真,就不用看第二个了
>>> 0 or 2 #输出:2 第一个为假,就得看第二个,第二个为真,输出为真(2)
>>> False or True #输出:True 第一个为假,需要看第二个
>>> True or False #输出:True 第一个为真,直接输出true
>>> 1 and 2 #输出:2
>>> 0 and 2 #输出:0 第一个为0 直接输出0
>>> False and 2 #输出:False 第一个为假,直接输出假
>>> True and 2 #输出:2
or 和 and 运算相关操作:
2.5 基本输入输出
input()函数语法?功能?
input("提示语句")
input("请介绍input的功能:")
3 基本数据类型
3.1 杂项
complex1= -1 + 2j #这个是复数 格式:a+bj
print(type(complex1))
print(int(3.14), type(int(3.14))) #float 转 int
print(int("314"), type(int("314"))) #str 转 int
print(str(314), type(str(314))) #int转str
print(str(3.14), type(str(3.14))) #float 转 str
print(float(314), type(float(314))) #int转float
print(float("3.14"), type(float("3.14"))) #str转float
3.2 字符串
3.3 序列类型的索引(字符串、列表等)
正向递增序号,从0开始
反向递减序号,从-1开始
字符串的索引访问和切片操作(掌握相关语法,能熟练使用)。课本 P90 和例 5.16
3.4.1 字符串大小比较
Python 中如何比较字符串大小?
print('xnjilhntm' == 'xnjilhntm') # True
print('xnjilhntm' < 'xnjilhntz') # True
print('abbbbbbb' > 'b') # False
print('' > 'a') # False
print('A' > 'a') # False
3.5 字典的索引操作
dict1 = {'姓名' : '张三','年龄': 33,'性别':'男','子女':{'儿子':'张思'},'兴趣':['rap','篮球']}
print(dict1)
print(dict1['年龄'])
print(dict1.get('性别'))
print(dict1['兴趣'][1])
{'姓名': '张三', '年龄': 33, '性别': '男', '子女': {'儿子': '张思'}, '兴趣': ['rap', '篮球']}
33
男
篮球
3.6 字符串相关函数/方法
3.6.1 序列排序
sorted()函数的语法?功能?熟练使用。
sorted()
函数是Python内置的排序函数,用于对可迭代对象进行排序。它可以接受一个可选的key
参数和一个可选的reverse
参数。
语法:
sorted(iterable, key=None, reverse=False)
参数说明:
iterable
:需要排序的可迭代对象,如列表、元组、字符串等。key
:可选参数,用于指定一个自定义的排序规则。该规则是一个函数,将作用于可迭代对象的每个元素上,返回一个用于比较的值。默认情况下,sorted()
函数使用元素本身作为比较依据。reverse
:可选参数,布尔值。当设置为True
时,表示按照降序排列;当设置为False
或未提供时,表示按照升序排列。默认为False
。
功能:
sorted()
函数的主要功能是对可迭代对象进行排序。根据提供的key
参数和reverse
参数,它可以实现多种排序方式,如升序、降序、自定义排序等。以下是一些示例:
- 对列表进行升序排序:
numbers = [3, 1, 4, 2]
sorted_numbers = sorted(numbers)
print(sorted_numbers) # 输出:[1, 2, 3, 4]
- 对列表进行降序排序:
numbers = [3, 1, 4, 2]
sorted_numbers = sorted(numbers, reverse=True)
print(sorted_numbers) # 输出:[4, 3, 2, 1]
- 对字符串列表进行字母顺序排序:
words = ['apple', 'banana', 'cherry']
sorted_words = sorted(words)
print(sorted_words) # 输出:['apple', 'banana', 'cherry']
- 对字符串列表进行字典顺序排序:
words = ['apple', 'banana', 'cherry']
sorted_words = sorted(words, key=lambda x: x.lower())
print(sorted_words) # 输出:['apple', 'banana', 'cherry']
熟练使用sorted()
函数可以帮助你更高效地对数据进行排序操作。在实际编程中,可以根据需求灵活运用这个函数来实现各种排序场景。
3.6.2 字符串的替换
str.replace(self, old, new[, count=-1])方法的语法?功能?熟练使用。
str.replace(old, new[, count=-1])
是Python字符串对象的一个方法,用于替换字符串中的子串。
语法:
str.replace(old, new[, count=-1])
参数说明:
old
:需要被替换的子串。new
:用于替换的新子串。count
:可选参数,表示替换的最大次数。默认值为-1,表示替换所有匹配的子串。如果指定了具体的次数,则只替换前n个匹配的子串。
功能:
str.replace()
方法用于将字符串中的某个子串替换为另一个子串。它会返回一个新的字符串,其中原来的子串已经被替换为新的子串。如果没有提供count
参数,那么所有的匹配都会被替换。如果提供了count
参数,那么只有前n个匹配会被替换。
熟练使用:
以下是一些使用str.replace()
方法的例子:
- 将字符串中的空格替换为下划线:
s = "Hello World"
s = s.replace(" ", "_")
print(s) # 输出:Hello_World
- 将字符串中的所有字母转换为小写:
s = "Hello World"
s = s.replace("", "").lower()
print(s) # 输出:hello world
- 将字符串中的所有数字替换为0: (有错误)
s = "Hello 123 World"
s = s.replace("", "0")
print(s) # 输出:Hello0World
3.6.3 是否包含子串
string.find(substr,start=0,end=len(string))方法的语法?功能?熟练使用。
ord()函数语法?功能?熟练使用。
ord 函数是以单个字符作为参数,返回对应的 ASCll 数值或者 Unicode 值
ord('a')
97
ord('b')
98
ord('c')
99
3.7 正则表达式
re.findall()语法,功能?熟练使用。
4 流程控制语句
4.1 分支结构
分支结构包含单分支、双分支、多分支等形式。
能区别单分支、双分支和多分支,掌握三者的语法结构,能举例进行说明,知道其各自有
啥用,能看懂程序流程图,能灵活选用它们。课本 P39
4.2 三元表达式
条件成立时执行的语句 if 条件表达式 else 条件不成立时执行的语句
x = 4
y = 99 if x > 3 else 999
print(y)
#输出99
4.3 for 循环和 while 循环
p55 页习题:
print("1~1000所有的完数有,其因子为:")
for n in range(1,1001):
total = 0; j = 0;factors = []
for i in range(1,n):
if(n % i == 0):
factors.append(i); total += 1
if(total == n):
print("{0}: {1}".format(n,factors))
这段代码的功能是打印出1到1000之间所有数的因子,并将它们存储在一个列表中。
具体来说,代码首先定义了一个空列表factors
,用于存储每个数的因子。然后使用两个嵌套的for循环来遍历1到n-1之间的所有数,如果当前数i能够整除n,则说明i是n的一个因子,将其添加到factors
列表中,并将计数器total
加1。最后,如果total
等于n,说明n是一个质数,将其和它的因子列表一起打印出来。
需要注意的是,在第二个for循环中,变量j
没有被使用到,可以将其删除以简化代码。另外,由于Python中的字符串格式化操作符是.format()
而不是%
,因此需要将占位符改为{}
。
p45 例题3.9
利用for循环求1~100中所有奇数的和以及所有偶数的和
sum_odd = 0; sum_even = 0
for i in range (1,101):
if (i%2 != 0): #奇数
sum_odd += i #奇数和
else: #偶数
sum_even += i #偶数和
print(f"奇数和为:{sum_odd}")
print(f"偶数和为:{sum_even}")
#输出
奇数和为:2500
偶数和为:2550
4.4 break 和 continue
break 和 continue 的功能,区别。能熟练使用。课本 P47,例 3.13,例 3.14 的方法 1,课
本 P487,例 3.15。
4.5 循环语句中的 else 子句
在 for 循环和 while 循环中,什么条件下,else 子句才会执行?如果循环语句中包含跳
转语句(break 和 continue),又会是什么情况嘞?
hobbies = ""
for i in range(1,3 + 1):
s = input('请输入爱好之一(最多三个,按Q或q结束):')
if s.upper() == 'Q':
break
hobbies += s + ''
else:
print('您输入了3个爱好')
print('您的爱好为:',hobbies)
#输出
请输入爱好之一(最多三个,按Q或q结束):a
请输入爱好之一(最多三个,按Q或q结束):b
请输入爱好之一(最多三个,按Q或q结束):c
您输入了3个爱好
您的爱好为: abc
请输入爱好之一(最多三个,按Q或q结束):a
请输入爱好之一(最多三个,按Q或q结束):q
您的爱好为: a
5 组合数据
5.1 可变和不可变数据类型
可变数据类型有哪些?不可变数据类型有哪些?
Python中的可变数据类型包括:
1. 列表(List):可以添加、删除、修改元素的序列类型。
2. 字典(Dictionary):可以添加、删除、修改键值对的无序键值对类型。
3. 集合(Set):不重复元素的无序序列类型。
4. 字符串(String):不可变的字符序列类型。
5. 元组(Tuple):不可变的有序序列类型。
Python中的不可变数据类型包括:
1. 整数(Integer):不可变的数字类型。
2. 浮点数(Float):不可变的实数类型。
3. 布尔值(Boolean):True或False,不可变的逻辑类型。
4. NoneType:表示空值,不可变的None类型。
5.2 列表
5.2.2 列表推导式
语法?功能?熟练使用。
new_list = []
for item in iterable:
if condition:
new_list.append(expression(item))
等价于:
new_list = [expression(item) for item in iterable if condition]
numbers = [2*x-1 for x in range(1,11)]
print(numbers) # [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
5.2.3 相关方法和函数
ls.count()方法的语法?功能?熟练使用。
Pty = "i love python,i am learning python"
print(Pty.count("i")) # 输出统计在字符串中共有多少个 i
# 3
print(Pty.count("i", 3)) # 输出统计从第三个起始位置起共有多少个 i
# 2
print(Pty.count("i", 3, 9)) # 输出统计从第三个起始位置起到第九个位置共有多少个 i
# 0
ls.remove()方法的语法?功能?熟练使用。
执行一次删除第一个匹配的
ls.remove()
方法是Python列表对象的一个方法,用于从列表中删除指定的元素。它的语法如下:
list.remove(element)
其中,list
表示要操作的列表对象,element
表示要删除的元素。如果列表中存在该元素,则将其删除;否则不执行任何操作。
ls.remove()
方法的功能是删除列表中指定的元素。它可以用于删除列表中的任意一个元素,也可以用于删除多个元素。例如:
# 创建一个列表
my_list = [1, 2, 3, 4, 5]
# 删除元素3
my_list.remove(3)
print(my_list) # 输出 [1, 2, 4, 5]
# 删除多个元素2和4
my_list.remove(2)
my_list.remove(4)
print(my_list) # 输出 [1, 5]
# 如果要删除的元素不存在,会抛出ValueError异常
my_list.remove(6) # ValueError: '6' is not in the list
sorted()函数的语法?功能?熟练使用
# 对列表进行排序
a = [5, 3, 4, 2, 1]
print(sorted(a))
# 对元组进行排序
a = (5, 4, 3, 1, 2)
print(sorted(a))
# 字典默认按照 key 进行排序
a = {4: 1, 5: 2, 3: 3, 2: 6, 1: 8}
print(sorted(a.items()))
print(sorted(a.values()))
# 对集合进行排序
a = {1, 5, 3, 2, 4}
print(sorted(a))
# 对字符串进行排序
a = "51423"
print(sorted(a))
#输出
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
[(1, 8), (2, 6), (3, 3), (4, 1), (5, 2)]
[1, 2, 3, 6, 8]
[1, 2, 3, 4, 5]
['1', '2', '3', '4', '5']
5.2.4 删除
字典元素怎么删除?有哪些办法?熟练使用。
在Python中,可以使用以下几种方法删除字典中的元素:
- del关键字:使用del关键字可以删除指定的键值对。例如:
my_dict = {'a': 1, 'b': 2, 'c': 3}
del my_dict['a']
print(my_dict) # Output: {'b': 2, 'c': 3}
- pop()方法:pop()方法可以删除指定的键并返回其对应的值。如果不指定键,则默认删除最后一个添加的键值对。例如:
my_dict = {'a': 1, 'b': 2, 'c': 3}
value = my_dict.pop('a')
print(value) # Output: 1
print(my_dict) # Output: {'b': 2, 'c': 3}
- clear()方法:clear()方法可以删除字典中的所有键值对。例如:
my_dict = {'a': 1, 'b': 2, 'c': 3}
my_dict.clear()
print(my_dict) # Output: {}
需要注意的是,使用del关键字或pop()方法删除字典元素时,如果要删除的键不存在,会抛出KeyError异常。而使用clear()方法删除字典元素时,不会抛出任何异常。
5.2.5 查/访问
字典元素怎么访问?有哪些办法?熟练使用。
在Python中,可以使用以下几种方法访问字典中的元素:
- 通过键访问:使用方括号[]和键名来访问字典中的元素。例如:
my_dict = {'a': 1, 'b': 2, 'c': 3}
value = my_dict['a']
print(value) # Output: 1
- 通过键的切片访问:使用方括号[]和一个包含起始索引、结束索引和步长的元组来访问字典中的元素。例如:
my_dict = {'a': 1, 'b': 2, 'c': 3}
value = my_dict['a':'c'][0]
print(value) # Output: 1
- 通过值访问:使用in关键字和值来判断字典中是否存在该值,如果存在则返回对应的键。例如:
my_dict = {'a': 1, 'b': 2, 'c': 3}
key = my_dict['b']
print(key) # Output: 'b'
需要注意的是,如果要访问的键不存在,使用in关键字会返回False。而使用方括号[]或键的切片访问时,如果要访问的键不存在,会抛出KeyError异常。
5.3 集合
5.3.1 集合的特点
相比于其他组合数据类型,集合有哪些特点
集合是一种数学概念,也是集合论的主要研究对象。集合中元素的三个特性是确定性、互异性和无序性。相比于其他数据类型,集合有以下特点:
- 集合中的元素是唯一的,不会出现重复的情况。
- 集合中的元素是互不相同的,即没有重复的元素。
- 集合中的元素可以进行并集、交集、差集等操作,而其他数据类型则不能进行这些操作。
5.4 综合
列表元组和字典在存储结构、定义、外形、访问方式上的区别?各自特点?应用领域?
什么是可变什么是不可变?可变数据类型有哪些?不可变数据类型有哪些?举例说明。
列表、元组和字典都是Python中的序列类型,它们之间的区别如下:
- 存储结构:列表是由若干个元素组成的有序集合,每个元素都有一个索引;元组是由若干个元素组成的有序集合,每个元素都有一个索引,且不可修改;字典是由若干个键值对组成的无序集合,其中键是唯一的。
- 定义:列表使用方括号[]表示,例如:my_list = [1, 2, 3];元组使用圆括号()表示,例如:my_tuple = (1, 2, 3);字典使用花括号{}表示,例如:my_dict = {‘key1’: ‘value1’, ‘key2’: ‘value2’}。
- 外形:列表和元组都是一维的序列类型,而字典是一个二维的键值对集合。
- 访问方式:列表和元组可以通过下标来访问元素,而字典可以通过键来访问元素。
- 可变性:列表和元组是可变的,可以对其进行添加、删除、修改等操作;而字典是不可变的,一旦创建就不能对其进行修改。
- 应用领域:列表和元组常用于存储多个相同类型的数据;字典常用于存储多个不同类型的数据。
可变数据类型包括:列表、元组、集合等。
不可变数据类型包括:整数、浮点数、字符串、布尔值、None等。
以进行并集、交集、差集等操作,而其他数据类型则不能进行这些操作。
5.4 综合
列表元组和字典在存储结构、定义、外形、访问方式上的区别?各自特点?应用领域?
什么是可变什么是不可变?可变数据类型有哪些?不可变数据类型有哪些?举例说明。
列表、元组和字典都是Python中的序列类型,它们之间的区别如下:
- 存储结构:列表是由若干个元素组成的有序集合,每个元素都有一个索引;元组是由若干个元素组成的有序集合,每个元素都有一个索引,且不可修改;字典是由若干个键值对组成的无序集合,其中键是唯一的。
- 定义:列表使用方括号[]表示,例如:my_list = [1, 2, 3];元组使用圆括号()表示,例如:my_tuple = (1, 2, 3);字典使用花括号{}表示,例如:my_dict = {‘key1’: ‘value1’, ‘key2’: ‘value2’}。
- 外形:列表和元组都是一维的序列类型,而字典是一个二维的键值对集合。
- 访问方式:列表和元组可以通过下标来访问元素,而字典可以通过键来访问元素。
- 可变性:列表和元组是可变的,可以对其进行添加、删除、修改等操作;而字典是不可变的,一旦创建就不能对其进行修改。
- 应用领域:列表和元组常用于存储多个相同类型的数据;字典常用于存储多个不同类型的数据。
可变数据类型包括:列表、元组、集合等。
不可变数据类型包括:整数、浮点数、字符串、布尔值、None等。