第六章 控制流程
## 一、条件判断
Python通过if-elif-else语句来进行条件判断。
if后面条件的结果是布尔值。当if条件为真时执行if下面的语句;当if为假时执行else下面的语句;elif与if类似,等同于else if。
```python
sex=‘未知‘
if sex==‘男‘: #如果if后面的表达式返回True,执行本次代码块
print(‘男性‘)
elif sex==‘女‘: #如果上一级if判断为False,则执行本次判断,如果elif表达式判断为True,则执行本次代码块
print(‘女性‘)
else sex==‘未知‘: #如果以上所有判断不满足,执行本代码块
print(‘未知性别‘)
```
运行以上代码块,结果为:未知性别
## 二、三木运算
三木运算是简单的条件判断的简写
```python
x=5
if x%2==0:
result=‘偶数‘
else:
result=‘奇数‘
print(result)
#以上六行代码块是普通条件判断语句
#以下三行代码块就是以上六行代码块的简单简写,也就是三木运算
x=5
result=‘偶数‘ if x%2==0 else ‘奇数‘
#值1 if 判断表达式 else 值2
#如果表达式表达式返回True,三目运算返回值1,如果表达式表达式返回False,三目运算返回值2
print(result)
```
## 三、条件循环
while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。
```python
i=0 #首先,定义i对象等于0
while i < 5: #写出一个判断表达式
print(i) #如果表达式返回True,则打印i值
i += 1 #使i递增,改变i对象
#以上四行代码块,返回结果为:
0
1
2
3
4
当i=5时,表达式返回False,则退出循环。
```
### 1、break
那么,有没有终止循环的代码呢?
```python
i=0
while i < 5:
print(i)
i += 1
if i == 3: #当i等于3时,执行break,代表跳出循环,不再执行
break
#返回结果为:
0
1
2
当i等于3时,if 判断语句为True,则执行break退出循环。
```
### 2、continue
那么,有没有跳过单次循环的代码呢?
```python
i=0
while i < 5:
i += 1
if i == 3: #当i等于3时,跳出该次循环,执行下一次循环。
continue
print(i)
#返回结果为:
1
2
4
5
当i等于3时,跳出该次循环, 即本次不执行while循环语句里的print(i)语句。
```
### 3、break 和 continue 的区别
```python
i = 0
while i < 5:
i += 1
if i == 3:
continue
print(i)
else: #当while条件返回False,或者说我们的循环正常结束了,则执行else语句,
print(‘循环结束了‘)
#返回结果为:
1
2
4
5
循环结束了
如果使用continue,能让循环跳过本次循环,让循环正常结束,如果使用的是break,则返回结果为:1 2 ,遇到break则跳出循环,不在执行循环语句了。
```
## 四、迭代循环
给定一个list或tuple或str等类型,通过for循环来遍历这个list或tuple或str这些可迭代对象,这种遍历称为迭代。迭代是通过 for ... in 来完成的。
### 1、list
```python
for i in [‘A‘,‘B‘,‘C‘]:
print(i)
#返回结果为:
A
B
C
```
### 2、tuple
```python
for i in (1,‘yan‘,‘yun‘):
print(i)
#返回结果为:
1
yan
yun
```
### 3、str
```python
for i in ‘abc‘:
print(i)
#返回结果为:
a
b
c
```
### 4、dict
迭代key:
```python
d={‘a‘:1,‘b‘:2,‘c‘:3}
for key in d:
print(key)
#返回结果为:
a
b
c
```
迭代value:
```python
for value in d.values():
print(value)
#返回结果为:
1
2
3
```
同时迭代key和value:
```python
for k, v in d.items():
print(k,v)
#返回结果为:
a 1
b 2
c 3
```
如何判断一个对象是可迭代对象呢?
通过collections模块的Iterable类型判断:
```python
from collections import Iterable
s=isinstance(‘abc‘, Iterable) # 判断str是否可迭代
print(s)
#返回结果为:True
l=isinstance([1,2,3], Iterable) # list是否可迭代
print(l)
#返回结果为:True
i=isinstance(123, Iterable) # 整数是否可迭代
print(i)
#返回结果为:False
```
## 五、end参数、range
### 1、end参数
```python
print(1)
print(2)
#返回结果为:
1
2
那么,end作用如下:
print(1,end=‘***\n‘) #\n:换行字符串
print(2)
#返回结果为:
1***
2
```
end可以用于将结果输出到同一行,或者在输出的末尾添加不同的字符。
### 2、range函数
range() 函数可创建一个整数列表,一般用在 for 循环中。
函数语法是:range(start, stop[, step])
参数说明:
- start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
- stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
- step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
```python
for i in range(1,10):
print(i)
#返回结果为:
1
2
3
4
5
6
7
8
9
```
## 六、课题练习
### 1、打印9*9乘法口诀表
### 2、打印range(31)除带7或是7的倍数的数以外的所有数,并注明奇数还是偶数。