Skip to content

Commit 3f9c9e4

Browse files
committed
修正了文档中数学公式无法显示的问题
1 parent ca8f2fc commit 3f9c9e4

16 files changed

+98
-86
lines changed

Day01-20/05.分支结构.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
在 Python 中,要构造分支结构可以使用`if``elif``else`三个关键字。所谓**关键字**就是编程语言中有特殊含义的单词,像`if``else`就是专门用于构造分支结构的关键字,很显然你不能够使用它作为变量名。当然,我们并不是每次构造分支结构都会把三个关键字全部用上,下面我们通过例子加以说明。
88

9-
我们来写一个身体质量指数(BMI)的计算器。身体质量质数也叫体质指数,是国际上常用的衡量人体胖瘦程度以及是否健康的一个标准,计算公式如下所示。通常认为$\small{18.5 \le BMI < 24}$是正常范围,$\small{BMI < 18.5}$说明体重过轻,$\small{BMI \ge 24}$说明体重过重,$\small{BMI \ge 27}$就属于肥胖的范畴了。
9+
我们来写一个身体质量指数(BMI)的计算器。身体质量质数也叫体质指数,是国际上常用的衡量人体胖瘦程度以及是否健康的一个标准,计算公式如下所示。通常认为 $\small{18.5 \le BMI < 24}$ 是正常范围, $\small{BMI < 18.5}$ 说明体重过轻, $\small{BMI \ge 24}$ 说明体重过重, $\small{BMI \ge 27}$ 就属于肥胖的范畴了。
1010

1111
$$
1212
BMI = \frac{体重}{身高^{2}}
@@ -31,7 +31,7 @@ if 18.5 <= bmi < 24:
3131

3232
> **提示**`if`语句的最后面有一个`:`,它是用英文输入法输入的冒号;程序中输入的`'``"``=``(``)`等特殊字符,都是在英文输入法状态下输入的,这一点之前已经提醒过大家了。很多初学者经常会忽略这一点,等到执行代码时,就会看到一大堆错误提示。当然,认真读一下错误提示还是很容易发现哪里出了问题,但是**强烈建议**大家在写代码的时候**切换到英文输入法**,这样可以避免很多不必要的麻烦。
3333
34-
上面的代码中,我们在计算和输出 BMI 之后,加上了一段分支结构,如果满足$\small{18.5 \le BMI < 24}$,程序会输出“你的身材很棒!”,但是如果不满足条件,这段输出就没有了。这就是我们上面说的代码有不同的执行路径,有些代码不一定会执行到。我们在`if`关键字的后面给出了一个表达式`18.5 <= bmi < 24`,之前我们说过,关系运算会产生布尔值,如果`if`后面的布尔值为`True`,那么`if`语句下方,有四个空格缩进的`print('你的身材很棒!')`就会被执行。我们先输入几组数据运行上面的代码,如下所示。
34+
上面的代码中,我们在计算和输出 BMI 之后,加上了一段分支结构,如果满足 $\small{18.5 \le BMI < 24}$ ,程序会输出“你的身材很棒!”,但是如果不满足条件,这段输出就没有了。这就是我们上面说的代码有不同的执行路径,有些代码不一定会执行到。我们在`if`关键字的后面给出了一个表达式`18.5 <= bmi < 24`,之前我们说过,关系运算会产生布尔值,如果`if`后面的布尔值为`True`,那么`if`语句下方,有四个空格缩进的`print('你的身材很棒!')`就会被执行。我们先输入几组数据运行上面的代码,如下所示。
3535

3636
第一组输入:
3737

@@ -83,7 +83,7 @@ class Test {
8383

8484
> **说明**:上面就是 BMI 计算器1.0版本对应的Java代码,欢迎在评论区吐槽它。
8585
86-
接下来,我们对上面的代码稍作修改,在 BMI 不满足$\small{18.5 \le BMI < 24}$的情况下,也给出相信的提示信息。我们可以在`if`代码块的后面增加一个`else`代码块,它会在`if`语句给出的条件没有达成时执行,如下所示。很显然,`if`下面的`print('你的身材很棒!')``else`下面的`print('你的身材不够标准哟!')`只有一个会被执行到。
86+
接下来,我们对上面的代码稍作修改,在 BMI 不满足 $\small{18.5 \le BMI < 24}$ 的情况下,也给出相信的提示信息。我们可以在`if`代码块的后面增加一个`else`代码块,它会在`if`语句给出的条件没有达成时执行,如下所示。很显然,`if`下面的`print('你的身材很棒!')``else`下面的`print('你的身材不够标准哟!')`只有一个会被执行到。
8787

8888
```python
8989
"""
@@ -229,6 +229,7 @@ print('状态码描述:', description)
229229
#### 例子1:分段函数求值
230230

231231
有如下所示的分段函数,要求输入`x`,计算出`y`
232+
232233
$$
233234
y = \begin{cases} 3x - 5, & (x \gt 1) \\ x + 2, & (-1 \le x \le 1) \\ 5x + 3, & (x \lt -1) \end{cases}
234235
$$
@@ -319,8 +320,9 @@ if a + b > c and a + c > b and b + c > a:
319320
else:
320321
print('不能构成三角形')
321322
```
322-
> **说明:** 上面的`if` 条件表示任意两边之和大于第三边,这是构成三角形的必要条件。当这个条件成立时,我们要计算并输出周长和面积,所以`if`下方有五条语句都保持了相同的缩进,它们是一个整体,只要`if`条件成立,它们都会被执行,这就是我们之前提到的代码块的概念。另外,上面计算三角形面积的公式叫做海伦公式,假设有一个三角形,边长分别为$\small{a}$、$\small{b}$、$\small{c}$,那么三角的面积$\small{A}$可以由下面的公式得到,其中,$\small{s=\frac{a+b+c}{2}}$。
323-
>$$
323+
> **说明:** 上面的`if` 条件表示任意两边之和大于第三边,这是构成三角形的必要条件。当这个条件成立时,我们要计算并输出周长和面积,所以`if`下方有五条语句都保持了相同的缩进,它们是一个整体,只要`if`条件成立,它们都会被执行,这就是我们之前提到的代码块的概念。另外,上面计算三角形面积的公式叫做海伦公式,假设有一个三角形,边长分别为 $\small{a}$ 、 $\small{b}$ 、 $\small{c}$ ,那么三角的面积 $\small{A}$ 可以由下面的公式得到,其中, $\small{s=\frac{a+b+c}{2}}$ 。
324+
>
325+
> $$
324326
> A = \sqrt{s(s-a)(s-b)(s-c)}
325327
> $$
326328
>

Day01-20/06.循环结构.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ for _ in range(3600):
5858

5959
<img src="res/day06/terminate_program.png" style="zoom:40%;">
6060

61-
下面,我们用`for-in`循环实现从1到100的整数求和,即$\small{\sum_{n=1}^{100}n}$
61+
下面,我们用`for-in`循环实现从1到100的整数求和,即 $\small{\sum_{n=1}^{100}{n}}$
6262

6363
```python
6464
"""
@@ -237,7 +237,7 @@ for i in range(1, 10):
237237

238238
要求:输入一个大于1的正整数,判断它是不是素数。
239239

240-
> **提示**:素数指的是只能被1和自身整除的大于1的整数。例如对于正整数`n`,我们可以通过在`2``n-1`之间寻找有没有`n`的因子,来判断它到底是不是一个素数。当然,循环不用从`2`开始到`n-1`结束,因为对于大于1的正整数,因子应该都是成对出现的,所以循环到$\small{\sqrt{n}}$就可以结束了。
240+
> **提示**:素数指的是只能被1和自身整除的大于1的整数。例如对于正整数`n`,我们可以通过在`2``n-1`之间寻找有没有`n`的因子,来判断它到底是不是一个素数。当然,循环不用从`2`开始到`n-1`结束,因为对于大于1的正整数,因子应该都是成对出现的,所以循环到 $\small{\sqrt{n}}$ 就可以结束了。
241241
242242
```python
243243
"""

Day01-20/07.分支和循环结构的应用.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ for _ in range(20):
4949

5050
要求:找出`100``999`范围内的所有水仙花数。
5151

52-
> **提示**:在数论中,水仙花数(narcissistic number)也被称为超完全数字不变数、自恋数、自幂数、阿姆斯特朗数,它是一个$\small{N}$位非负整数,其各位数字的$\small{N}$次方和刚好等于该数本身,例如:$\small{153=1^3+5^3+3^3}$,所以`153` 是一个水仙花数;$\small{1634=1^4+6^4+3^4+4^4}$,所以`1634`也是一个水仙花数。对于三位数,解题的关键是将它拆分为个位、十位、百位,再判断是否满足水仙花数的要求,这一点利用Python中的`//``%`运算符其实很容易做到。
52+
> **提示**:在数论中,水仙花数(narcissistic number)也被称为超完全数字不变数、自恋数、自幂数、阿姆斯特朗数,它是一个 $\small{N}$ 位非负整数,其各位数字的 $\small{N}$ 次方和刚好等于该数本身,例如: $\small{153=1^3+5^3+3^3}$ ,所以`153` 是一个水仙花数; $\small{1634=1^4+6^4+3^4+4^4}$ ,所以`1634`也是一个水仙花数。对于三位数,解题的关键是将它拆分为个位、十位、百位,再判断是否满足水仙花数的要求,这一点利用Python中的`//``%`运算符其实很容易做到。
5353
5454
```python
5555
"""

Day01-20/11.常用数据结构之字符串.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@
99
### 字符串的定义
1010

1111
所谓**字符串**,就是**由零个或多个字符组成的有限序列**,一般记为:
12+
1213
$$
1314
s = a_1a_2 \cdots a_n \,\,\,\,\, (0 \le n \le \infty)
1415
$$
16+
1517
在 Python 程序中,我们把单个或多个字符用单引号或者双引号包围起来,就可以表示一个字符串。字符串中的字符可以是特殊符号、英文字母、中文字符、日文的平假名或片假名、希腊字母、Emoji 字符(如:💩、🐷、🀄️)等。
1618

1719
```python

Day01-20/12.常用数据结构之集合.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ print(set2) # {2, 4}
108108

109109
#### 比较运算
110110

111-
两个集合可以用`==``!=`进行相等性判断,如果两个集合中的元素完全相同,那么`==`比较的结果就是`True`,否则就是`False`。如果集合`A`的任意一个元素都是集合`B`的元素,那么集合`A`称为集合`B`的子集,即对于$\small{\forall{a} \in {A}}$,均有$\small{{a} \in {B}}$,则$\small{{A} \subseteq {B}}$,`A``B`的子集,反过来也可以称`B``A`的超集。如果`A``B`的子集且`A`不等于`B`,那么`A`就是`B`的真子集。Python 为集合类型提供了判断子集和超集的运算符,其实就是我们非常熟悉的`<``<=``>``>=`这些运算符。当然,我们也可以通过集合类型的方法`issubset``issuperset`来判断集合之间的关系,代码如下所示。
111+
两个集合可以用`==``!=`进行相等性判断,如果两个集合中的元素完全相同,那么`==`比较的结果就是`True`,否则就是`False`。如果集合`A`的任意一个元素都是集合`B`的元素,那么集合`A`称为集合`B`的子集,即对于 $\small{\forall{a} \in {A}}$ ,均有 $\small{{a} \in {B}}$ ,则 $\small{{A} \subseteq {B}}$ `A``B`的子集,反过来也可以称`B``A`的超集。如果`A``B`的子集且`A`不等于`B`,那么`A`就是`B`的真子集。Python 为集合类型提供了判断子集和超集的运算符,其实就是我们非常熟悉的`<``<=``>``>=`这些运算符。当然,我们也可以通过集合类型的方法`issubset``issuperset`来判断集合之间的关系,代码如下所示。
112112

113113
```python
114114
set1 = {1, 3, 5}

Day01-20/14.函数和模块.md

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
11
## 函数和模块
22

33
在讲解本节课的内容之前,我们先来研究一道数学题,请说出下面的方程有多少组正整数解。
4+
45
$$
5-
x_1 + x_2 + x_3 + x_4 = 8
6+
x_{1} + x_{2} + x_{3} + x_{4} = 8
67
$$
78

8-
你可能已经想到了,这个问题其实等同于将8个苹果分成四组且每组至少一个苹果有多少种方案,也等价于在分隔8个苹果的7个间隙之间放入三个隔断将苹果分成四组有多少种方案,所以答案是$ C_7^3=35 $,其中,$C_{7}^{3}$代表7选3的组合数,其计算公式如下所示。
9+
你可能已经想到了,这个问题其实等同于将8个苹果分成四组且每组至少一个苹果有多少种方案,也等价于在分隔8个苹果的7个间隙之间放入三个隔断将苹果分成四组有多少种方案,所以答案是 $ C_{7}^{3}=35$ ,其中, $C_{7}^{3}$ 代表7选3的组合数,其计算公式如下所示。
10+
911
$$
1012
C_m^n = \frac {m!} {n!(m-n)!}
1113
$$
1214

13-
14-
根据之前学习的知识,我们可以用循环做累乘的方式分别计算出$m!$、$n!$和$(m-n)!$,然后再通过除法运算得到组合数$C_m^n$,代码如下所示。
15+
根据之前学习的知识,我们可以用循环做累乘的方式分别计算出 $\small{m!}$ 、 $\small{n!}$ 和 $\small{(m-n)!}$ ,然后再通过除法运算得到组合数 $C_{m}^{n}$ ,代码如下所示。
1516

1617
```python
1718
"""
@@ -52,11 +53,11 @@ n = 3
5253
35
5354
```
5455

55-
不知大家是否注意到,上面的代码中我们做了三次求阶乘的操作,虽然$m$、$n$、$m - n$的值各不相同,但是三段代码并没有实质性的区别,属于重复代码。世界级的编程大师*Martin Fowler*曾经说过:“**代码有很多种坏味道,重复是最坏的一种!**”。要写出高质量的代码,首先就要解决重复代码的问题。对于上面的代码来说,我们可以将求阶乘的功能封装到一个称为“函数”的代码块中,在需要计算阶乘的地方,我们只需“调用函数”即可实现对求阶乘功能的复用。
56+
不知大家是否注意到,上面的代码中我们做了三次求阶乘的操作,虽然 $\small{m}$ 、 $\small{n}$ 、 $\small{m - n}$ 的值各不相同,但是三段代码并没有实质性的区别,属于重复代码。世界级的编程大师*Martin Fowler*曾经说过:“**代码有很多种坏味道,重复是最坏的一种!**”。要写出高质量的代码,首先就要解决重复代码的问题。对于上面的代码来说,我们可以将求阶乘的功能封装到一个称为“函数”的代码块中,在需要计算阶乘的地方,我们只需“调用函数”即可实现对求阶乘功能的复用。
5657

5758
### 定义函数
5859

59-
数学上的函数通常形如$y = f(x)$或者$z = g(x, y)$这样的形式,在$y = f(x)$中,$f$是函数的名字,$x$是函数的自变量,$y$是函数的因变量;而在$z = g(x, y)$中,$g$是函数名,$x$和$y$是函数的自变量,$z$是函数的因变量。Python 中的函数跟这个结构是一致的,每个函数都有自己的名字、自变量和因变量。我们通常把 Python 函数的自变量称为函数的参数,而因变量称为函数的返回值。
60+
数学上的函数通常形如 $\small{y = f(x)}$ 或者 $\small{z = g(x, y)}$ 这样的形式,在 $\small{y = f(x)}$ 中, $\small{f}$ 是函数的名字, $\small{x}$ 是函数的自变量, $\small{y}$ 是函数的因变量;而在 $\small{z = g(x, y)}$ 中, $\small{g}$ 是函数名, $\small{x}$ 和 $\small{y}$ 是函数的自变量, $\small{z}$ 是函数的因变量。Python 中的函数跟这个结构是一致的,每个函数都有自己的名字、自变量和因变量。我们通常把 Python 函数的自变量称为函数的参数,而因变量称为函数的返回值。
6061

6162
Python 中可以使用`def`关键字来定义函数,和变量一样每个函数也应该有一个漂亮的名字,命名规则跟变量的命名规则是一样的(大家赶紧想想我们之前讲过的变量的命名规则)。在函数名后面的圆括号中可以设置函数的参数,也就是我们刚才说的函数的自变量,而函数执行完成后,我们会通过`return`关键字来返回函数的执行结果,这就是我们刚才说的函数的因变量。如果函数中没有`return`语句,那么函数会返回代表空值的`None`。另外,函数也可以没有自变量(参数),但是函数名后面的圆括号是必须有的。一个函数要做的事情(要执行的代码),是通过代码缩进的方式放到函数定义行之后,跟之前分支和循环结构的代码块类似,如下图所示。
6263

0 commit comments

Comments
 (0)