Skip to content

Commit af189e1

Browse files
committed
更正了文档中的bug
1 parent c8d8d23 commit af189e1

7 files changed

+18
-20
lines changed

res/set.png

450 KB
Loading

第007课:分支和循环结构的应用.md

+7-7
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
通过上两节课的学习,大家对Python中的分支和循环结构已经有了感性的认识。**分支和循环结构**的重要性不言而喻,它**是构造程序逻辑的基础**,对于初学者来说也是相对困难的部分。大部分初学者在学习了分支和循环结构后都能理解它们的用途和用法,但是遇到实际问题的时候又无法下手;**看懂别人的代码很容易,但是要自己写出同样的代码却又很难**。如果你也有同样的问题和困惑,千万不要沮丧,这只是因为你才刚刚开始编程之旅,**你的练习量还没有达到让你可以随心所欲的写出代码的程度**,只要加强编程练习,这个问题迟早都会解决的。下面我们就为大家讲解一些经典的案例。
44

5-
### 经典的例子
5+
### 经典小案例
66

7-
#### 寻找**水仙花数**
7+
#### 例子1:寻找水仙花数。
88

9-
> **说明**:水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯特朗数,它是一个3位数,该数字每个位上数字的立方之和正好等于它本身,例如:1^3^ + 5^3^ + 3^3^ = 153。
9+
> **说明**:水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯特朗数,它是一个3位数,该数字每个位上数字的立方之和正好等于它本身,例如:1<sup>3</sup> + 5<sup>3</sup> + 3<sup>3</sup> = 153。
1010
1111
这个题目的关键是将一个三位数拆分为个位、十位、百位,这一点利用Python中的`//`(整除)和`%`(求模)运算符其实很容易做到,代码如下所示。
1212

@@ -42,7 +42,7 @@ while num > 0:
4242
print(reversed_num)
4343
```
4444

45-
#### **百钱百鸡**问题
45+
#### 例子2:百钱百鸡问题。
4646

4747
> **说明**:百钱百鸡是我国古代数学家[张丘建](https://baike.baidu.com/item/%E5%BC%A0%E4%B8%98%E5%BB%BA/10246238)在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?翻译成现代文是:公鸡5元一只,母鸡3元一只,小鸡1元三只,用100块钱买一百只鸡,问公鸡、母鸡、小鸡各有多少只?
4848
@@ -64,7 +64,7 @@ for x in range(0, 21):
6464

6565
上面使用的方法叫做**穷举法**,也称为**暴力搜索法**,这种方法通过一项一项的列举备选解决方案中所有可能的候选项并检查每个候选项是否符合问题的描述,最终得到问题的解。这种方法看起来比较笨拙,但对于运算能力非常强大的计算机来说,通常都是一个可行的甚至是不错的选择,只要问题的解存在就能够找到它。
6666

67-
#### **CRAPS赌博游戏**
67+
#### 例子3:CRAPS赌博游戏
6868

6969
> **说明**:CRAPS又称花旗骰,是美国拉斯维加斯非常受欢迎的一种的桌上赌博游戏。该游戏使用两粒骰子,玩家通过摇两粒骰子获得点数进行游戏。简化后的规则是:玩家第一次摇骰子如果摇出了7点或11点,玩家胜;玩家第一次如果摇出2点、3点或12点,庄家胜;玩家如果摇出其他点数则玩家继续摇骰子,如果玩家摇出了7点,庄家胜;如果玩家摇出了第一次摇的点数,玩家胜;其他点数玩家继续摇骰子,直到分出胜负。
7070
@@ -116,7 +116,7 @@ while money > 0:
116116
print('你破产了, 游戏结束!')
117117
```
118118

119-
#### **斐波那契数列**
119+
#### 例子4:斐波那契数列
120120

121121
> **说明**:斐波那契数列(Fibonacci sequence),通常也被称作黄金分割数列,是意大利数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)在《计算之书》中研究在理想假设条件下兔子成长率问题而引入的数列,因此这个数列也常被戏称为“兔子数列”。斐波那契数列的特点是数列的前两个数都是1,从第三个数开始,每个数都是它前面两个数的和,按照这个规律,斐波那契数列的前10个数是:`1, 1, 2, 3, 5, 8, 13, 21, 34, 55`。斐波那契数列在现代物理、准晶体结构、化学等领域都有直接的应用。
122122
@@ -136,7 +136,7 @@ for _ in range(18):
136136
print(b, end=' ')
137137
```
138138

139-
#### 打印素数
139+
#### 例子5:打印素数
140140

141141
> **说明**:素数指的是只能被1和自身整除的正整数(不包括1)。
142142

第009课:常用数据结构之字符串.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,7 @@ print(s.strip()) # [email protected]
372372

373373
#### 其他方法
374374

375-
字符串类型还有许多其他的方法,后面我们用到这些方法的时候再为大家进行续点讲解。对于字符串类型来说,还有一个常用的操作是对字符串进行匹配检查,即检查字符串是否满足某种特定的模式。例如,一个网站对用户注册信息中用户名和邮箱的检查,就属于模式匹配检查。实现模式匹配检查的工具叫做正则表达式,Python语言通过标准库中的`re`模块提供了对正则表达式的支持,我们会在后续的课程中为大家专门讲解这个知识点
375+
除了上面讲到的方法外,字符串类型还有很多方法,如拆分、合并、编码、解码等,这些方法等我们用到的时候再为大家进行续点讲解。对于字符串类型来说,还有一个常用的操作是对字符串进行匹配检查,即检查字符串是否满足某种特定的模式。例如,一个网站对用户注册信息中用户名和邮箱的检查,就属于模式匹配检查。实现模式匹配检查的工具叫做正则表达式,Python语言通过标准库中的`re`模块提供了对正则表达式的支持,我们会在后续的课程中为大家讲解这个知识点
376376

377377
### 简单的总结
378378

第010课:函数和字符串的应用.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
接下来我们通过一些案例来为大家讲解函数和字符串的应用。
66

7-
### 一些案例
7+
### 经典小案例
88

99
#### 例子1:设计一个生成指定长度验证码的函数。
1010

@@ -112,7 +112,7 @@ while True:
112112
content = content[1:] + content[0]
113113
```
114114

115-
> **提示**:我们之前建议大家暂时用VS Code来编写Python代码,“命令行提示符”或“终端”中来运行Python程序。如果你已经提前开始使用PyCharm了,需要提醒一句:PyCharm的运行窗口无用上面的方式做清屏处理。想看到上面代码的运行效果,建议在“命令行提示符”“终端”中运行程序
115+
> **提示**:我们之前建议大家暂时用VS Code来编写Python代码,如果你已经提前开始使用PyCharm了,需要提醒大家,PyCharm的运行窗口无法用上面的方式做清屏处理。建议在“命令行提示符”或“终端”(PyCharm中的“Terminal”相当于就是Windows系统的“命令行提示符”或macOS系统的“终端”)中运行该程序
116116
117117
### 简单的总结
118118

第013课:列表和元组的应用.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
## 第013课:列表和元组的应用
22

3-
列表和元组在实际项目开发的时候都有非常多的应用,我们先通过下面的几个案例,来帮助大家熟悉列表和元组的使用方法
3+
列表和元组在编写应用程序时都非常有用,我们通过下面几个案例帮助大家熟悉列表和元组的使用方法
44

55
### 经典的案例
66

@@ -102,7 +102,7 @@ print(which_day(2016, 3, 1)) # 61
102102

103103
> **说明**:双色球属乐透型彩票范畴,由中国福利彩票发行管理中心统一组织发行,在全国范围内销售。红球号码范围为01~33,蓝球号码范围为01~16。双色球每期从33个红球中开出6个号码,从16个蓝球中开出1个号码作为中奖号码,双色球玩法即是竞猜开奖号码的6个红球号码和1个蓝球号码。
104104
105-
这个题目的思路是用一个列表保存红色球的号码,然后通过`random`模块的`sample`函数实现无放回抽样,这样就可以抽中6个不重复的红色球号码。红色球需要排序,可以使用列表的`sort`方法,显示的时候一位数前面需要做补0的操作,可以用字符串格式化的方式来处理。
105+
这个题目的思路是用一个列表保存红色球的号码,然后通过`random`模块的`sample`函数实现无放回抽样,这样就可以抽中6个不重复的红色球号码。红色球需要排序,可以使用列表的`sort`方法,显示的时候一位数前面需要做补`0`的操作,可以用字符串格式化的方式来处理。
106106

107107
```Python
108108
"""

第014课:常用数据结构之集合.md

+5-7
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,11 @@
66
2. **互异性**:一个集合中,任何两个元素都认为是不相同的,即每个元素只能出现一次。
77
3. **确定性**:给定一个集合,任给一个元素,该元素或者属于或者不属于该集合,二者必居其一,不允许有模棱两可的情况出现。
88

9-
Python程序中的集合跟数学上的集合是完全一致的,需要强调的是上面所说的无序性和互异性。无序性说明集合中的元素并不像列中的元素那样一个挨着一个,可以通过索引的方式实现随机访问(随机访问指的是给定一个有效的范围,随机抽取出一个数字,然后通过这个数字获取到对应的元素),所以Python中的**集合肯定不能够支持索引运算**。另外,集合的互异性决定了集合中不能有重复元素,这一点也是集合区别于列表的关键,说得更直白一些就是,Python中的集合类型具有去重特性。当然,Python中的集合一定是支持`in``not in`成员运算的,这样就可以确定一个元素是否属于集合,也就是上面所说的集合的确定性。
10-
11-
接下来,我们为大家介绍在Python程序中如何创建和使用集合。
9+
Python程序中的集合跟数学上的集合是完全一致的,需要强调的是上面所说的无序性和互异性。无序性说明集合中的元素并不像列中的元素那样一个挨着一个,可以通过索引的方式实现随机访问(随机访问指的是给定一个有效的范围,随机抽取出一个数字,然后通过这个数字获取到对应的元素),所以Python中的**集合肯定不能够支持索引运算**。另外,集合的互异性决定了**集合中不能有重复元素**,这一点也是集合区别于列表的关键,说得更直白一些就是,Python中的集合类型具有去重特性。当然,Python中的集合一定是支持`in``not in`成员运算的,这样就可以确定一个元素是否属于集合,也就是上面所说的集合的确定性。**集合的成员运算在性能上要优于列表的成员运算**,这是集合的底层存储特性决定的,此处我们暂时不做讨论,先记下这个结论即可。
1210

1311
### 创建集合
1412

15-
创建集合可以使用`{}`字面量语法,`{}`中需要至少有一个元素,因为没有元素的`{}`并不是空集合而是一个空字典,我们下一节课就会大家介绍字典的知识。当然,也可以使用内置函数`set`来创建一个集合,准确的说`set`并不是一个函数,而是创建集合对象的构造器,这个知识点我们很快也会讲到,现在不理解跳过它就可以了。要创建空集合可以使用`set()`;也可以将其他序列转换成集合,例如:`set('hello')`会得到一个包含了4个字符的集合(重复的`l`会被去掉)。除了这两种方式,我们还可以使用生成式语法来创建集合,就像我们之前用生成式创建列表那样。要知道集合中有多少个元素,还是使用内置函数`len`;使用`for`循环可以实现对集合元素的遍历。
13+
在Python中,创建集合可以使用`{}`字面量语法,`{}`中需要至少有一个元素,因为没有元素的`{}`并不是空集合而是一个空字典,我们下一节课就会大家介绍字典的知识。当然,也可以使用内置函数`set`来创建一个集合,准确的说`set`并不是一个函数,而是创建集合对象的构造器,这个知识点我们很快也会讲到,现在不理解跳过它就可以了。要创建空集合可以使用`set()`;也可以将其他序列转换成集合,例如:`set('hello')`会得到一个包含了4个字符的集合(重复的`l`会被去掉)。除了这两种方式,我们还可以使用生成式语法来创建集合,就像我们之前用生成式创建列表那样。要知道集合中有多少个元素,还是使用内置函数`len`;使用`for`循环可以实现对集合元素的遍历。
1614

1715
```Python
1816
# 创建集合的字面量语法(重复元素不会出现在集合中)
@@ -38,7 +36,7 @@ for elem in set4:
3836

3937
### 集合的运算
4038

41-
Python为集合类型提供了非常丰富的运算符,主要包括:成员运算、交集运算、并集运算、差集运算、子集运算、超集运算等
39+
Python为集合类型提供了非常丰富的运算符,主要包括:成员运算、交集运算、并集运算、差集运算、比较运算(相等性、子集、超集)等
4240

4341
#### 成员运算
4442

@@ -108,9 +106,9 @@ set1 &= set3
108106
print(set1) # {3, 6}
109107
```
110108

111-
#### 判断子集和超集
109+
#### 比较运算
112110

113-
如果集合A的任意一个元素都是集合B的元素,那么集合A称为集合B的子集,即对于∀a∈A,均有a∈B,则A⊆B。A是B的子集,反过来也可以称B是A的超集。如果A是B的子集且A不等于B,那么A就是B的真子集。Python中的集合类型提供了判断子集和超集的运算符,代码如下所示。
111+
两个集合可以用`==``!=`进行相等性判断,如果两个集合中的元素完全相同,那么`==`比较的结果就是`True`,否则就是`False`如果集合A的任意一个元素都是集合B的元素,那么集合A称为集合B的子集,即对于∀a∈A,均有a∈B,则A⊆B。A是B的子集,反过来也可以称B是A的超集。如果A是B的子集且A不等于B,那么A就是B的真子集。Python为集合类型提供了判断子集和超集的运算符,其实就是我们非常熟悉的`<``>`运算符,代码如下所示。
114112

115113
```Python
116114
set1 = {1, 3, 5}

第015课:常用数据结构之字典.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ print(person) # {'name': '王大锤', 'sex': True}
156156

157157
我们通过几个简单的例子来讲解字典的应用。
158158

159-
**例子1**输入一段话,统计每个英文字母出现的次数。
159+
**例子1**输入一段话,统计每个英文字母出现的次数。
160160

161161
```Python
162162
sentence = input('请输入一段话: ')

0 commit comments

Comments
 (0)