更新了Python语言基础部分文档

This commit is contained in:
jackfrued 2025-02-17 22:06:42 +08:00
parent 1508421868
commit b9211254b1
5 changed files with 28 additions and 30 deletions

View File

@ -1,12 +1,10 @@
## 分支结构
迄今为止,我们写的 Python 代码都是一条一条语句按顺序向下执行的这种代码结构叫做顺序结构。然而仅有顺序结构并不能解决所有的问题比如我们设计一个游戏游戏第一关的过关条件是玩家获得1000分那么在第一关完成后我们要根据玩家得到的分数来决定是进入第二关还是告诉玩家“Game Over”。在这样的场景下,我们的代码就会产生两个分支,而且这两个分支只有一个会被执行。类似的场景还有很多我们将这种结构称之为“分支结构”或“选择结构”。给大家一分钟的时间你应该可以想到至少5个以上类似的例子赶紧试一试吧
迄今为止,我们写的 Python 程序都是一条一条语句按顺序向下执行的这种代码结构叫做顺序结构。然而仅有顺序结构并不能解决所有的问题比如我们设计一个游戏游戏第一关的过关条件是玩家获得1000分那么在第一关完成后我们要根据玩家得到的分数来决定是进入第二关还是告诉玩家“Game Over”(游戏结束)。在这种场景下我们的代码就会产生两个分支而且只有一个会被执行。类似的场景还有很多我们将这种结构称之为“分支结构”或“选择结构”。给大家一分钟的时间你应该可以想到至少5个以上类似的例子赶紧试一试吧
### 使用if和else构造分支结构
在 Python 中,要构造分支结构可以使用`if`、`elif`和`else`三个关键字。所谓**关键字**就是编程语言中有特殊含义的单词,像`if`和`else`就是专门用于构造分支结构的关键字,很显然你不能够使用它作为变量名。当然,我们并不是每次构造分支结构都会把三个关键字全部用上,下面我们通过例子加以说明。
我们来写一个身体质量指数BMI的计算器。身体质量质数也叫体质指数是国际上常用的衡量人体胖瘦程度以及是否健康的一个标准计算公式如下所示。通常认为 $\small{18.5 \le BMI < 24}$ 是正常范围 $\small{BMI < 18.5}$ 说明体重过轻 $\small{BMI \ge 24}$ 说明体重过重 $\small{BMI \ge 27}$ 就属于肥胖的范畴了
在 Python 中,构造分支结构最常用的是`if`、`elif`和`else`三个关键字。所谓**关键字**就是编程语言中有特殊含义的单词很显然你不能够使用它作为变量名。当然我们并不是每次构造分支结构都会把三个关键字全部用上我们通过例子加以说明。例如我们要写一个身体质量指数BMI的计算器。身体质量质数也叫体质指数是国际上常用的衡量人体胖瘦程度以及是否健康的一个指标计算公式如下所示。通常认为 $\small{18.5 \le BMI < 24}$ 是正常范围 $\small{BMI < 18.5}$ 说明体重过轻 $\small{BMI \ge 24}$ 说明体重过重 $\small{BMI \ge 27}$ 就属于肥胖的范畴了
$$
BMI = \frac{体重}{身高^{2}}
@ -31,7 +29,7 @@ if 18.5 <= bmi < 24:
> **提示**`if`语句的最后面有一个`:`,它是用英文输入法输入的冒号;程序中输入的`'`、`"`、`=`、`(`、`)`等特殊字符,都是在英文输入法状态下输入的,这一点之前已经提醒过大家了。很多初学者经常会忽略这一点,等到执行代码时,就会看到一大堆错误提示。当然,认真读一下错误提示还是很容易发现哪里出了问题,但是**强烈建议**大家在写代码的时候**切换到英文输入法**,这样可以避免很多不必要的麻烦。
上面的代码中,我们在计算和输出 BMI 之后,加上了一段分支结构,如果满足 $\small{18.5 \le BMI < 24}$ 程序会输出你的身材很棒!”,但是如果不满足条件这段输出就没有了这就是我们上面说的代码有不同的执行路径有些代码不一定会执行到我们在`if`关键字的后面给出了一个表达式`18.5 <= bmi < 24`之前我们说过关系运算会产生布尔值如果`if`后面的布尔值为`True`那么`if`语句下方有四个空格缩进的`print('你的身材很棒')`就会被执行我们先输入几组数据运行上面的代码如下所示
上面的代码中,我们在计算和输出 BMI 之后,加上了一段分支结构,如果满足 $\small{18.5 \le BMI < 24}$ 程序会输出你的身材很棒!”,但是如果不满足条件这段输出就没有了这就是刚才提到的代码可以有不同的执行路径有些代码不一定会执行到我们在`if`关键字的后面给出了一个表达式`18.5 <= bmi < 24`之前我们说过关系运算会产生布尔值如果`if`后面的布尔值为`True`那么`if`语句下方有四个空格缩进的`print('你的身材很棒')`就会被执行我们先输入几组数据运行上面的代码如下所示
第一组输入:
@ -58,7 +56,7 @@ bmi = 31.0
bmi = 16.3
```
只有第一组输入的身高和体重计算出的 BMI 在18.5到24这个范围值内所以触发了`if`条件,输出了“你的身材很棒”。需要说明的是,不同于 C、C++、Java 等编程语言Python 中没有用花括号来构造代码块而是**使用缩进的方式来表示代码的层次结构**,如果`if`条件成立的情况下需要执行多条语句,只要保持多条语句具有相同的缩进就可以了。换句话说,若干行连续的语句如果保持了相同的缩进,那么它们就属于同一个**代码块**,相当于是一个执行的整体。缩进可以使用任意数量的空格,但**通常使用4个空格**,强烈建议大家**不要使用制表键Tab键来缩进代码**如果你已经习惯了这么做可以设置你的代码编辑器自动将1个制表键变成4个空格很多代码编辑器都支持这项功能PyCharm 中默认也是这样设定的。还有一点,在 C、C++、Java 等编程语言中,`18.5 <= bmi < 24`要写成两个条件`bmi >= 18.5`和`bmi < 24`然后把两个条件用逻辑与运算符连接起来Python 中也可以这么做例如刚才的`if`语句也可以写成`if bmi >= 18.5 and bmi < 24:`但是没有必要难道`if 18.5 <= bmi < 24:`这个写法它不香吗下面用 Java 代码做了同样的事情看不懂 Java 代码没关系感受一下它和 Python 语法的区别就可以了
只有第一组输入的身高和体重计算出的 BMI 在 18.5 24 这个范围值内,所以触发了`if`条件,输出了“你的身材很棒”。需要说明的是,不同于 C、C++、Java 等编程语言Python 中没有用花括号来构造代码块而是**使用缩进的方式来表示代码的层次结构**,如果`if`条件成立的情况下需要执行多条语句,只要保持多条语句具有相同的缩进就可以了。换句话说,若干行连续的语句如果保持了相同的缩进,那么它们就属于同一个**代码块**,相当于是一个执行的整体。缩进可以使用任意数量的空格,但**通常使用4个空格**,强烈建议大家**不要使用制表键Tab键来缩进代码**,如果你已经习惯了这么做,可以设置你的代码编辑器自动将 1 个制表键变成 4 个空格很多代码编辑器都支持这项功能PyCharm 中默认也是这样设定的。还有一点,在 C、C++、Java 等编程语言中,`18.5 <= bmi < 24`要写成两个条件`bmi >= 18.5`和`bmi < 24`然后把两个条件用与运算符连接起来Python 中也可以这么做例如刚才的`if`语句也可以写成`if bmi >= 18.5 and bmi < 24:`但是没有必要难道`if 18.5 <= bmi < 24:`这个写法它不香吗下面用 Java 代码做了同样的事情看不懂 Java 代码没关系感受一下它和 Python 语法的区别就可以了
```java
import java.util.Scanner;
@ -81,7 +79,7 @@ class Test {
}
```
> **说明**:上面就是 BMI 计算器1.0版本对应的Java代码欢迎在评论区吐槽它
> **说明**:上面就是 BMI 计算器 1.0 版本对应的 Java 代码,很多人喜欢 Python 语言不是没有道理的,通常它都能用更少的代码解决同样的问题
接下来,我们对上面的代码稍作修改,在 BMI 不满足 $\small{18.5 \le BMI < 24}$ 的情况下也给出相信的提示信息我们可以在`if`代码块的后面增加一个`else`代码块它会在`if`语句给出的条件没有达成时执行如下所示很显然`if`下面的`print('你的身材很棒')``else`下面的`print('你的身材不够标准哟')`只有一个会被执行到
@ -160,7 +158,7 @@ bmi = 16.3
### 使用match和case构造分支结构
Python 3.10 中增加了一种新的构造分支结构的方式,通过使用`match`和`case` 关键字我们可以轻松的构造出多分支结构。Python 的官方文档在介绍这个新语法时,举了一个 HTTP 响应状态码识别的例子,非常有意思。如果不知道什么是 HTTP 响应状态吗,可以看看 MDN 上面的[文档](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status)。下面我们对官方文档上的示例稍作修改,为大家讲解这个语法,先看看下面用`if-else`结构实现的代码。
Python 3.10 中增加了一种新的构造分支结构的方式,通过使用`match`和`case` 关键字我们可以轻松的构造出多分支结构。Python 的官方文档在介绍这个新语法时,举了一个 HTTP 响应状态码识别的例子(根据 HTTP 响应状态输出对应的描述),非常有意思。如果不知道什么是 HTTP 响应状态吗,可以看看 MDN 上面的[文档](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status)。下面我们对官方文档上的示例稍作修改,为大家讲解这个语法,先看看下面用`if-else`结构实现的代码。
```python
status_code = int(input('响应状态码: '))
@ -200,19 +198,23 @@ match status_code:
case 403: description = 'Forbidden'
case 404: description = 'Not Found'
case 405: description = 'Method Not Allowed'
case 418: description = 'I am a teapot'
case 429: description = 'Too many requests'
case _: description = 'Unknown Status Code'
print('状态码描述:', description)
```
> **说明**:带有`_`的`case`语句在代码中起到通配符的作用,如果前面的分支都没有匹配上,代码就会来到`case _`。`case _`的是可选的,并非每种分支结构都要给出通配符选项。如果分支中出现了`case _`,它只能放在分支结构的最后面,如果它的后面还有其他的分支,那么这些分支将是不可达的。
当然,`match-case`语法还有很多高级玩法,我们等用到时候再为大家讲解,有一个合并模式可以在这里分享给大家。例如,我们要将响应状态码`401`、`403`和`404`归入一个分支,`400`和`405`归入到一个分支,其他保持不变,代码还可以这么写。
当然,`match-case`语法还有很多高级玩法,其中有一个合并模式可以先教给大家。例如,我们要将响应状态码`401`、`403`和`404`归入一个分支,`400`和`405`归入到一个分支,其他保持不变,代码还可以这么写。
```python
status_code = int(input('响应状态码: '))
match status_code:
case 400 | 405: description = 'Invalid Request'
case 401 | 403 | 404: description = 'Not Allowed'
case 418: description = 'I am a teapot'
case 429: description = 'Too many requests'
case _: description = 'Unknown Status Code'
print('状态码描述:', description)
```
@ -271,7 +273,7 @@ else:
print(f'{y = }')
```
> **说明**:大家可以自己感受和评判一下上面两种写法哪一种更好。在“[**Python 之禅**](https://zhuanlan.zhihu.com/p/111843067)”中有这么一句话:“**Flat is better than nested**”。之所以认为“扁平化”的代码更好,是因为代码嵌套的层次如果很多,会严重的影响代码的可读性。所以,我认为上面的代码第一种写法是更好的选择
> **说明**:大家可以自己感受和评判一下上面两种写法哪一种更好。在“[**Python 之禅**](https://zhuanlan.zhihu.com/p/111843067)”中有这么一句话:“**Flat is better than nested**”。之所以认为“扁平化”的代码更好,是因为代码嵌套的层次如果很多,会严重的影响代码的可读性。所以,我个人更推荐大家使用第一种写法
#### 例子2百分制成绩转换成等级
@ -320,11 +322,7 @@ if a + b > c and a + c > b and b + c > a:
else:
print('不能构成三角形')
```
> **说明:** 上面的`if` 条件表示任意两边之和大于第三边,这是构成三角形的必要条件。当这个条件成立时,我们要计算并输出周长和面积,所以`if`下方有五条语句都保持了相同的缩进,它们是一个整体,只要`if`条件成立,它们都会被执行,这就是我们之前提到的代码块的概念。另外,上面计算三角形面积的公式叫做海伦公式,假设有一个三角形,边长分别为 $\small{a}$ 、 $\small{b}$ 、 $\small{c}$ ,那么三角的面积 $\small{A}$ 可以由下面的公式得到,其中, $s=\frac{a + b + c}{2}$ 。
>$$
> A = \sqrt{s(s-a)(s-b)(s-c)}
> $$
>
> **说明:** 上面的`if` 条件表示任意两边之和大于第三边,这是构成三角形的必要条件。当这个条件成立时,我们要计算并输出周长和面积,所以`if`下方有五条语句都保持了相同的缩进,它们是一个整体,只要`if`条件成立,它们都会被执行,这就是我们之前提到的代码块的概念。另外,上面计算三角形面积的公式叫做海伦公式,假设有一个三角形,边长分别为 $\small{a}$ 、 $\small{b}$ 、 $\small{c}$ ,那么三角的面积 $\small{A}$ 可以由公式 $\small{A = \sqrt{s(s-a)(s-b)(s-c)}}$ 得到,其中, $s=\frac{a + b + c}{2}$ 表示半周长。
### 总结

View File

@ -1,6 +1,6 @@
## 循环结构
我们在写程序的时候,极有可能遇到需要重复执行某条指令或某些指令的场景例如我们需要每隔1秒钟在屏幕上输出一次“hello, world”并持续输出一个小时。如下所示的代码可以完成一次这样的操作如果要持续输出一个小时我们就需要把这段代码写3600遍你愿意这么做吗
我们在写程序的时候极有可能遇到需要重复执行某条或某些指令的场景例如我们需要每隔1秒钟在屏幕上输出一次“hello, world”并持续输出一个小时。如下所示的代码可以完成一次这样的操作如果要持续输出一个小时我们就需要把这段代码写3600遍你愿意这么做吗
```python
import time
@ -9,9 +9,9 @@ print('hello, world')
time.sleep(1)
```
> **说明**Python 内置`time`模块的`sleep`函数可以实现程序的休眠,参数`1`表示休眠的秒数,可以使用`int`或`float`类型,例如`0.05`表示`50`毫秒。
> **说明**Python 内置`time`模块的`sleep`函数可以实现程序的休眠,参数`1`表示休眠的秒数,可以使用`int`或`float`类型,例如`0.05`表示`50`毫秒。关于函数和模块的知识,我们在后续的课程中会为大家讲解。
为了应对上述场景,我们可以在 Python 程序中使用循环结构。所谓循环结构就是程序中控制某条或某些指令重复执行的结构。有了这样的结构刚才的代码就不需要写3600遍而是写一遍然后放到循环结构中重复3600次。在 Python 语言中构造循环结构有两种做法,一种是`for-in`循环,另一种是`while`循环。
为了应对上述场景中的问题,我们可以在 Python 程序中使用循环结构。所谓循环结构,就是程序中控制某条或某些指令重复执行的结构。有了这样的结构,刚才的代码就不需要写 3600 遍,而是写一遍然后放到循环结构中重复 3600 次。在 Python 语言中构造循环结构有两种做法,一种是`for-in`循环,另一种是`while`循环。
### for-in循环
@ -31,14 +31,14 @@ for i in range(3600):
time.sleep(1)
```
需要说明的是,上面代码中的`range(3600)`可以构造出一个从`0`到`3599`的范围,当我们把这样一个范围放到`for-in`循环中,就可以通过前面的循环变量`i`依次取出从`0`到`3599`的整数,这就让`for-in`代码块中的语句可以重复3600次。当然`range`的用法非常灵活,下面的清单给出了使用`range`函数的例子:
需要说明的是,上面代码中的`range(3600)`可以构造出一个从`0`到`3599`的范围,当我们把这样一个范围放到`for-in`循环中,就可以通过前面的循环变量`i`依次取出从`0`到`3599`的整数,这就让`for-in`代码块中的语句重复 3600 次。当然,`range`的用法非常灵活,下面的清单给出了使用`range`函数的例子:
- `range(101)`:可以用来产生`0`到`100`范围的整数,需要注意的是取不到`101`。
- `range(1, 101)`:可以用来产生`1`到`100`范围的整数,相当于是左闭右开的设定,即`[1, 101)`。
- `range(1, 101, 2)`:可以用来产生`1`到`100`的奇数,其中`2`是步长(跨度),即每次递增的值,`101`取不到。
- `range(100, 0, -2)`:可以用来产生`100`到`1`的偶数,其中`-2`是步长(跨度),即每次递减的值,`0`取不到。
大家可能已经注意到了,上面的输出和休眠操作都没有用到循环变量`i`,对于不需要用到循环变量的`for-in`循环结构,按照 Python 的编程惯例,我们通常把循环变量命名为`_`,修改后的代码如下所示。虽然结果没什么变化,但是这样写显得你更专业。
大家可能已经注意到了,上面代码的输出操作和休眠操作都没有用到循环变量`i`,对于不需要用到循环变量的`for-in`循环结构,按照 Python 的编程惯例,我们通常把循环变量命名为`_`,修改后的代码如下所示。虽然结果没什么变化,但是这样写显得你更专业,逼格瞬间拉满
```python
"""
@ -162,7 +162,7 @@ print(total)
### break和continue
我们再来看一个极端的场景,把`while`循环的条件直接设置为布尔值`True`,还是从 1 到 100 的偶数求和。
如果把`while`循环的条件设置为`True`,即让条件恒成立会怎么样呢?我们看看下面的代码,还是使用`while`构造循环结构,计算 1 到 100 的偶数和。
```python
"""
@ -181,7 +181,7 @@ while True:
print(total)
```
上面的代码中使用`while True`构造了一个条件恒成立的循环,也就意味着如果不做特殊处理,循环是不会结束的,这就是常说的“死循环”。为了在`i`的值超过 100 后让循环停下来,我们使用了`break`关键字,它的作用是终止循环结构的执行。需要注意的是,`break`只能终止它所在的那个循环,这一点在使用嵌套循环结构时需要引起注意,后面我们会讲到什么是嵌套的循环结构。除了`break`之外,还有另一个在循环结构中可以使用的关键字`continue`,它可以用来放弃本次循环后续的代码直接让循环进入下一轮,代码如下所示。
上面的代码中使用`while True`构造了一个条件恒成立的循环,也就意味着如果不做特殊处理,循环是不会结束的,这就是我们常说的“死循环”。为了在`i`的值超过 100 后让循环停下来,我们使用了`break`关键字,它的作用是终止循环结构的执行。需要注意的是,`break`只能终止它所在的那个循环,这一点在使用嵌套循环结构时需要引起注意,后面我们会讲到什么是嵌套的循环结构。除了`break`之外,还有另一个在循环结构中可以使用的关键字`continue`,它可以用来放弃本次循环后续的代码直接让循环进入下一轮,代码如下所示。
```python
"""
@ -217,7 +217,7 @@ for i in range(1, 10):
print()
```
上面的代码中,`for-in`循环的循环体中又用到了`for-in`循环,外面的循环用来控制产生`i`行的输出,而里面的循环则用来控制在一行中输出`j`列。显然,里面的`for-in`循环的输出就是乘法口诀表中的一整行。所以在里面的循环完成时,我们用了一个`print()`来实现换行的效果,最后的输出如下所示。
上面的代码中,`for-in`循环的循环体中又用到了`for-in`循环,外面的循环用来控制产生`i`行的输出,而里面的循环则用来控制在一行中输出`j`列。显然,里面的`for-in`循环的输出就是乘法口诀表中的一整行。所以在里面的循环完成时,我们用了一个`print()`来实现换行的效果,让下面的输出重新另起一行,最后的输出如下所示。
```
1×1=1
@ -330,7 +330,7 @@ while True:
print(f'你一共猜了{counter}次.')
```
> **说明**:上面的代码使用`import random`导入了 Python 标准库的`random`模块,该模块的`randrange`函数帮助我们生成了 1 到 100 范围的随机数。变量`counter`用来记录循环执行的次数,也就是用户一共做出了几次猜测,每循环一次`counter`的值都会加 1。
> **说明**:上面的代码使用`import random`导入了 Python 标准库的`random`模块,该模块的`randrange`函数帮助我们生成了 1 到 100 范围的随机数(不包括 100。变量`counter`用来记录循环执行的次数,也就是用户一共猜了几次,每循环一次`counter`的值都会加 1。
### 总结

View File

@ -1,6 +1,6 @@
## 分支和循环结构实战
通过前面两节课的学习,大家对 Python 中的分支结构和循环结构已经有了初步的认知。**分支结构和循环结构是构造程序逻辑的基础**,它们的重要性不言而喻,但是对于初学者来说这也是比较困难的部分。很多人对分支结构和循环结构的语法是能够理解的,但是遇到实际问题的时候又无法下手;**看懂别人的代码很容易,但是要自己写出类似的代码却又很难**。如果你也有同样的问题和困惑,千万不要沮丧,这只是因为你的编程之旅才刚刚开始,**你的练习量还没有达到让你可以随心所欲写出代码的程度**,只要加强编程练习,通过量的积累来产生质的变化,这个问题迟早都会解决的。
通过前面两节课的学习,大家对 Python 中的分支结构和循环结构已经有了初步的认知。**分支结构和循环结构是构造程序逻辑的基础**,它们的重要性不言而喻,但是对于初学者来说这也是比较困难的部分。很多人对分支结构和循环结构的语法是能够理解的,但是遇到实际问题的时候又无法下手;**看懂别人的代码很容易,但是要自己写出类似的代码却又很难**。如果你也有同样的问题和困惑,千万不要沮丧,这只是因为你的编程之旅才刚刚开始,**你的练习量还没有达到让你可以随心所欲写出代码的程度**,只要加强编程练习,通过量的积累来产生质的变化,这个问题迟早都会解决的。
### 例子1100以内的素数

View File

@ -39,11 +39,11 @@ print(f'5点出现了{f5}次')
print(f'6点出现了{f6}次')
```
上面的代码非常有多么“丑陋”相信就不用我多说了。当然,更为可怕的是,如果我们要掷两颗或者掷更多的色子,然后统计每种点数出现的次数,那就需要定义更多的变量,写更多的分支结构,大家想想都会感到恶心。讲到这里,相信大家心中已经有一个疑问了:有没有办法用一个变量来保存多个数据,有没有办法用统一的代码对多个数据进行操作?答案是肯定的,在 Python 中我们可以通过容器变量来保存和操作多个数据,我们首先为大家介绍列表(`list`)这种新的数据类型。
上面的代码非常有多么“丑陋”相信就不用我多说了。当然,更为可怕的是,如果我们要掷两颗或者掷更多的色子,然后统计每种点数出现的次数,那就需要定义更多的变量,写更多的分支结构,大家想想都会感到恶心。讲到这里,相信大家心中已经有一个疑问了:有没有办法用一个变量来保存多个数据,有没有办法用统一的代码对多个数据进行操作?答案是肯定的,在 Python 语言中我们可以通过容器型变量来保存和操作多个数据,我们首先为大家介绍列表(`list`)这种新的数据类型。
### 创建列表
在 Python 中,**列表是由一系元素按特定顺序构成的数据序列**,这就意味着如果我们定义一个列表类型的变量,**可以用它来保存多个数据**。在 python 中,可以使用`[]`字面量语法来定义列表,列表中的多个元素用逗号进行分隔,代码如下所示。
在 Python 中,**列表是由一系元素按特定顺序构成的数据序列**,这就意味着如果我们定义一个列表类型的变量,**可以用它来保存多个数据**。在 Python 中,可以使用`[]`字面量语法来定义列表,列表中的多个元素用逗号进行分隔,代码如下所示。
```python
items1 = [35, 12, 99, 68, 55, 35, 87]
@ -54,7 +54,7 @@ print(items2) # ['Python', 'Java', 'Go', 'Kotlin']
print(items3) # [100, 12.3, 'Python', True]
```
> **说明**:列表中可以有重复元素,例如`items1`中的`35`;列表中可以有不同类型的元素,例如`items3`中有`int`类型、`float`类型、`str`类型和`bool`类型的元素,但是我们通常并不建议将不同类型的元素放在同一个列表中,主要是操作起来极为不便。
> **说明**:列表中可以有重复元素,例如`items1`中的`35`;列表中可以有不同类型的元素,例如`items3`中有`int`类型、`float`类型、`str`类型和`bool`类型的元素,但是我们通常并不建议将不同类型的元素放在同一个列表中,主要是操作起来极为不便。
我们可以使用`type`函数来查看变量的类型,有兴趣的小伙伴可以自行查看上面的变量`items1`到底是什么类型。因为列表可以保存多个元素,它是一种容器型的数据类型,所以我们在给列表类型的变量起名字时,变量名通常用复数形式的单词。
@ -158,7 +158,7 @@ print(nums1 <= nums3) # True
print(nums2 >= nums3) # False
```
> **说明**:上面的`nums1`和`nums2`对应元素完全相同,所以`==`运算的结果是`True`。`nums2`和`nums3`的比较,由于`nums2`的第一个元素`1`小于`nums3`的第一个元素`3`,所以`nums2 >= nums3`比较的结果是`False`。两个列表的关系运算在实际工作并不那么常用,如果实在不理解就下面放放吧,不用纠结。
> **说明**:上面的`nums1`和`nums2`对应元素完全相同,所以`==`运算的结果是`True`。`nums2`和`nums3`的比较,由于`nums2`的第一个元素`1`小于`nums3`的第一个元素`3`,所以`nums2 >= nums3`比较的结果是`False`。两个列表的关系运算在实际工作并不那么常用,如果实在不理解就跳过吧,不用纠结。
### 元素的遍历

View File

@ -176,7 +176,7 @@ print(scores)
<img src="res/day09/lottery.png" style="zoom:85%;">
> **提示**:知乎上有一段对国内各种形式的彩票本质的论述相当精彩,这里分享给大家:“**虚构一个不劳而获的人,去忽悠一群想不劳而获的人,最终养活一批真正不劳而获的人**”。很多对概率没有概念的人甚至认为彩票中与不中的概率都是50%还有很多人认为如果中奖的概率是1%那么买100次就一定可以中奖这些都是非常荒唐的想法。所以珍爱生命远离任何形式的赌博
> **提示**:知乎上有一段对国内各种形式的彩票本质的论述相当精彩,这里分享给大家:“**虚构一个不劳而获的人,去忽悠一群想不劳而获的人,最终养活一批真正不劳而获的人**”。很多对概率没有概念的人,甚至认为彩票中与不中的概率都是 50%;还有很多人认为如果中奖的概率是 1%,那么买 100 次就一定可以中奖,这些都是非常荒唐的想法。所以,**珍爱生命,远离(任何形式的)赌博**
下面,我们通过 Python 程序来生成一组随机号码。