流程控制语句
This commit is contained in:
parent
54143bc20a
commit
813f6a1c53
@ -5,9 +5,11 @@ sidebar_position: 2
|
||||
data: 2022年2月9日
|
||||
---
|
||||
|
||||
## if 语句
|
||||
## 判断语句
|
||||
|
||||
在Python中,要构造分支结构可以使用`if`、`elif`和`else`关键字。所谓**关键字**就是有特殊含义的单词,像`if`和`else`就是专门用于构造分支结构的关键字,很显然你不能够使用它作为变量名(事实上,用作其他的标识符也是不可以)。下面的例子中演示了如何构造一个分支结构。
|
||||
### if
|
||||
|
||||
在Python中,要构造分支结构可以使用`if`、`elif`和`else`关键字。
|
||||
|
||||
```python
|
||||
"""
|
||||
@ -16,6 +18,7 @@ data: 2022年2月9日
|
||||
Version: 0.1
|
||||
Author: 骆昊
|
||||
"""
|
||||
|
||||
username = input('请输入用户名: ')
|
||||
password = input('请输入口令: ')
|
||||
# 用户名是admin且密码是123456则身份验证成功否则身份验证失败
|
||||
@ -25,22 +28,41 @@ else:
|
||||
print('身份验证失败!')
|
||||
```
|
||||
|
||||
需要说明的是和 C/C++、Java 等语言不同,Python 中没有用花括号来构造代码块而是**使用了缩进的方式来表示代码的层次结构**,如果`if`条件成立的情况下需要执行多条语句,只要保持多条语句具有相同的缩进就可以了。换句话说**连续的代码如果又保持了相同的缩进那么它们属于同一个代码块**,相当于是一个执行的整体。**缩进**可以使用任意数量的空格,但**通常使用4个空格**,建议大家**不要使用制表键**或者**设置你的代码编辑工具自动将制表键变成4个空格**。
|
||||
|
||||
当然如果要构造出更多的分支,可以使用`if...elif...else...`结构或者嵌套的`if...else...`结构。
|
||||
|
||||
## range 队列
|
||||
### match
|
||||
|
||||
`range(1, 101)`可以用来构造一个从1到100的范围,当我们把这样一个范围放到`for-in`循环中,就可以通过前面的循环变量`x`依次取出从1到100的整数。当然,`range`的用法非常灵活,下面给出了一个例子:
|
||||
match 语句接受一个表达式并将它的值与以一个或多个 case 语句块形式给出的一系列模式进行比较。 这在表面上很类似 C, Java 或 JavaScript (以及许多其他语言) 中的 switch 语句,但它还能够从值中提取子部分 (序列元素或对象属性) 并赋值给变量。
|
||||
|
||||
- `range(101)`:可以用来产生0到100范围的整数,需要注意的是取不到101。
|
||||
- `range(1, 101)`:可以用来产生1到100范围的整数,相当于前面是闭区间后面是开区间。
|
||||
- `range(1, 101, 2)`:可以用来产生1到100的奇数,其中2是步长,即每次数值递增的值。
|
||||
- `range(100, 0, -2)`:可以用来产生100到1的偶数,其中-2是步长,即每次数字递减的值。
|
||||
```python
|
||||
def http_error(status):
|
||||
match status:
|
||||
case 400:
|
||||
return "Bad request"
|
||||
case 404:
|
||||
return "Not found"
|
||||
case 418:
|
||||
return "I'm a teapot"
|
||||
case _:
|
||||
return "Something's wrong with the internet"
|
||||
```
|
||||
|
||||
## for-in 循环
|
||||
最后一个代码块: "变量名" `_` 被作为 *通配符* 并必定会匹配成功。 如果没有任何 case 语句匹配成功,则任何分支都不会被执行。
|
||||
|
||||
**如果明确的知道循环执行的次数或者要对一个容器进行迭代**,那么我们推荐使用`for-in`循环,例如下面代码中计算1~100求和的结果
|
||||
你可以使用 `|` (“ or ”)在一个模式中组合几个字面值:
|
||||
|
||||
```python
|
||||
case 401 | 403 | 404:
|
||||
return "Not allowed"
|
||||
```
|
||||
|
||||
|
||||
|
||||
## 循环语句
|
||||
|
||||
### for
|
||||
|
||||
Python 的 for 语句与 C 或 Pascal 中的不同。Python 的 for 语句不迭代算术递增数值(如 Pascal),或是给予用户定义迭代步骤和暂停条件的能力(如 C),而是迭代列表或字符串等任意序列,元素的迭代顺序与在序列中出现的顺序一致。
|
||||
|
||||
```python
|
||||
"""
|
||||
@ -56,9 +78,16 @@ for x in range(101):
|
||||
print(sum)
|
||||
```
|
||||
|
||||
## while 循环
|
||||
`range(101)`可以用来构造一个从1到100的范围,当我们把这样一个范围放到`for-in`循环中,就可以通过前面的循环变量`x`依次取出从1到100的整数。当然,`range`的用法非常灵活,下面给出了一个例子:
|
||||
|
||||
如果要构造不知道具体循环次数的循环结构,我们推荐使用`while`循环。`while`循环通过一个能够产生或转换出`bool`值的表达式来控制循环,表达式的值为`True`则继续循环;表达式的值为`False`则结束循环。
|
||||
- `range(101)`:可以用来产生0到100范围的整数,需要注意的是取不到101。
|
||||
- `range(1, 101)`:可以用来产生1到100范围的整数,相当于前面是闭区间后面是开区间。
|
||||
- `range(1, 101, 2)`:可以用来产生1到100的奇数,其中2是步长,即每次数值递增的值。
|
||||
- `range(100, 0, -2)`:可以用来产生100到1的偶数,其中-2是步长,即每次数字递减的值。
|
||||
|
||||
### while
|
||||
|
||||
如果要构造不知道具体循环次数的循环结构,那么使用`while`循环通过一个能够产生或转换出`bool`值的表达式来控制循环,表达式的值为`True`则继续循环;表达式的值为`False`则结束循环。
|
||||
|
||||
```python
|
||||
"""
|
||||
@ -86,5 +115,52 @@ if counter > 7:
|
||||
print('你的智商余额明显不足')
|
||||
```
|
||||
|
||||
上面的代码中使用了`break`关键字来提前终止循环,需要注意的是`break`只能终止它所在的那个循环,这一点在使用嵌套的循环结构(下面会讲到)需要引起注意。除了`break`之外,还有另一个关键字是`continue`,它可以用来放弃本次循环后续的代码直接让循环进入下一轮。
|
||||
### break
|
||||
|
||||
break 语句和 C 中的类似,用于跳出最近的 for 或 while 循环。
|
||||
|
||||
### continue
|
||||
|
||||
continue 语句也借鉴自 C 语言,表示继续执行循环的下一次迭代。
|
||||
|
||||
### else
|
||||
|
||||
循环语句支持 else 子句;for 循环中,可迭代对象中的元素全部循环完毕时,或 while 循环的条件为假时,执行该子句;break 语句终止循环时,不执行该子句。
|
||||
|
||||
```python
|
||||
for n in range(2, 10):
|
||||
for x in range(2, n):
|
||||
if n % x == 0:
|
||||
print(n, 'equals', x, '*', n//x)
|
||||
break
|
||||
else:
|
||||
# loop fell through without finding a factor
|
||||
print(n, 'is a prime number')
|
||||
|
||||
"""
|
||||
2 is a prime number
|
||||
3 is a prime number
|
||||
4 equals 2 * 2
|
||||
5 is a prime number
|
||||
6 equals 2 * 3
|
||||
7 is a prime number
|
||||
8 equals 2 * 4
|
||||
9 equals 3 * 3
|
||||
"""
|
||||
```
|
||||
|
||||
## 其他语句
|
||||
|
||||
### pass
|
||||
|
||||
pass 语句不执行任何操作。语法上需要一个语句,但程序不实际执行任何动作时,可以使用该语句。例如:
|
||||
|
||||
```python
|
||||
while True:
|
||||
pass # Busy-wait for keyboard interrupt (Ctrl+C)
|
||||
|
||||
# 最小的类
|
||||
class MyEmptyClass:
|
||||
pass
|
||||
```
|
||||
|
||||
|
@ -1,12 +1,11 @@
|
||||
---
|
||||
id: Python 简介
|
||||
title: Python 简介
|
||||
id: 简介
|
||||
title: 简介
|
||||
sidebar_position: 0
|
||||
data: 2022年2月9日
|
||||
---
|
||||
|
||||
## 简介
|
||||
|
||||
Python 是一种解释型语言,不需要编译和链接,可以节省大量开发时间。
|
||||
|
||||
Python 程序简洁、易读,通常比实现同种功能的 C、C++、Java 代码短很多,原因如下:
|
36
package-lock.json
generated
36
package-lock.json
generated
@ -3468,11 +3468,11 @@
|
||||
}
|
||||
},
|
||||
"cross-fetch": {
|
||||
"version": "3.1.4",
|
||||
"resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.4.tgz",
|
||||
"integrity": "sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ==",
|
||||
"version": "3.1.5",
|
||||
"resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz",
|
||||
"integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==",
|
||||
"requires": {
|
||||
"node-fetch": "2.6.1"
|
||||
"node-fetch": "2.6.7"
|
||||
}
|
||||
},
|
||||
"cross-spawn": {
|
||||
@ -5867,9 +5867,12 @@
|
||||
}
|
||||
},
|
||||
"node-fetch": {
|
||||
"version": "2.6.1",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
|
||||
"integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
|
||||
"version": "2.6.7",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
|
||||
"integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
|
||||
"requires": {
|
||||
"whatwg-url": "^5.0.0"
|
||||
}
|
||||
},
|
||||
"node-forge": {
|
||||
"version": "1.2.1",
|
||||
@ -8079,6 +8082,11 @@
|
||||
"resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz",
|
||||
"integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g=="
|
||||
},
|
||||
"tr46": {
|
||||
"version": "0.0.3",
|
||||
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
|
||||
"integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o="
|
||||
},
|
||||
"trim": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz",
|
||||
@ -8473,6 +8481,11 @@
|
||||
"resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz",
|
||||
"integrity": "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw=="
|
||||
},
|
||||
"webidl-conversions": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
|
||||
"integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE="
|
||||
},
|
||||
"webpack": {
|
||||
"version": "5.65.0",
|
||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.65.0.tgz",
|
||||
@ -8830,6 +8843,15 @@
|
||||
"resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
|
||||
"integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg=="
|
||||
},
|
||||
"whatwg-url": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
|
||||
"integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=",
|
||||
"requires": {
|
||||
"tr46": "~0.0.3",
|
||||
"webidl-conversions": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"which": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
||||
|
Loading…
Reference in New Issue
Block a user