Python3基础篇(四)——条件控制

前言:
阅读这篇文章我能学到什么?
  这篇文章将带你学习Python3中的条件控制结构。if条件结构似乎已成各类程序语言的标配,如果你有其他语言的基础学习起来将会非常简单。

1 if结构

语法结构:

python
1
2
if <Expression>:
<CodedBlock>

  <Expression>表示表达式,其结果转化成布尔型决定if分支的执行。<CodeBlock>是if内的代码块,只有当if的条件表达式<Expression>为真时代码块才会被执行。python是以缩进来表示代码块的,<CodeBlock>代码块必须比if至少有一个空格的缩进。另外,<CodeBlock>代码块可以由多个语句构成。不要忘记:号。
流程图:

plaintext
1
2
3
4
5
6
7
8
9
10
flowchat
Start=>start: 开始
End=>end: 结束
Operation=>operation: <CodeBlock>
Condition=>condition: <Expression>?

Start->Condition
Condition(yes)->Operation
Operation->End
Condition(no)->End

  可以看到if内的语句<CodeBlock>在条件表达式<Expression>结果为真时被执行,假时不执行。
代码示例:

python
1
2
3
4
5
6
7
if True:                #条件为真
print(1) #执行
print("a") #执行

if False: #条件为假
print(2) #不执行
print("b") #执行

运行结果:

cmd
1
2
3
1
a
b

2 if——else结构

python
1
2
3
4
if <Expression>:
<CodeBlock1>
else:
<CodeBlock2>

  当<Expression>条件表达式为真时执行<CodeBlock1>,为假时执行<CodeBlock2>。也即if和else下的代码块只能二选一执行,执行哪个取决于条件表达式的布尔结果。

plaintext
1
2
3
4
5
6
7
8
9
10
11
12
flowchat
Start=>start: 开始
End=>end: 结束
Operation1=>operation: <CodeBlock1>
Operation2=>operation: <CodeBlock2>
Condition=>condition: <Expression>

Start->Condition
Condition(yes)->Operation1
Condition(no)->Operation2
Operation1->End
Operation2->End

  流程图可以清晰看出if-else的二分支结构特性。
代码示例:

python
1
2
3
4
5
6
7
8
9
if True:                        #条件为真
print(1) #执行
else:
print(2) #不执行

if False: #条件为假
print(3) #执行
else:
print(4) #不执行

运行结果:

cmd
1
2
1
4

3 if——elif结构

语法结构:

python
1
2
3
4
if <Expression1>:
<CodedBlock1>
else if <Expression2>:
<CodedBlock1>

  当<Expression1>条件表达式1为真时执行<CodeBlock1>代码块1,为假时继续判断<Expression2>条件表达式2。若表达式2为真则执行<CodeBlock2>代码块2,为假则既不执行代码块1也不执行代码块2,程序将往后运行。需要 ==注意== 的是当表达式1和2都为真时,有序判断有先后顺序,会先判断表达式1也将执行代码块1,执行完代码块1后就结束了这个if——elif结构的处理。只有在表达式1为假的情况下才会判断表达式2。

plaintext
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
flowchat
Start=>start: 开始
End=>end: 结束
Condition1=>condition: <Expression1>
Condition2=>condition: <Expression2>
Operation1=>operation: <CodeBlock1>
Operation2=>operation: <CodeBlock2>

Start->Condition1
Condition1(yes)->Operation1
Condition1(no)->Condition2
Operation1->End
Condition2(yes)->Operation2
Condition2(no)->End
Operation2->End

代码示例:

python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if True:                    #条件为真
print(1) #执行
elif False: #未运行到这里
print(2) #不执行

if False: #条件为假
print(1) #不执行
elif True: #条件为真
print(2) #执行

if False: #条件为假
print(1) #未执行
elif False: #条件为假
print(2) #未执行

if True: #条件为真
print(1) #不执行
elif True: #未运行到这里
print(2) #不执行

运行结果:

cmd
1
2
3
1
2
1

4 if——elif——else结构

语法结构:

python
1
2
3
4
5
6
if <Expression1>:
<CodedBlock1>
elif <Expression2>:
<CodedBlock2>
else:
<CodedBlock3>

  与if——elif区别在于,当<Expression1><Expression2>都为假时将执行<CodeBlock3>

plaintext
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
flowchat
Start=>start: 开始
End=>end: 结束
Condition1=>condition: <Expression1>
Condition2=>condition: <Expression2>
Operation1=>operation: <CodeBlock1>
Operation2=>operation: <CodeBlock2>
Operation3=>operation: <CodeBlock3>

Start->Condition1
Condition1(yes)->Operation1
Condition1(no)->Condition2
Operation1->End
Condition2(yes)->Operation2
Condition2(no)->Operation3
Operation3->End
Operation2->End

代码示例:

python
1
2
3
4
5
6
if False:                   #条件为假
print(1) #未执行
elif False: #条件为假
print(2) #未执行
else:
print(3) #执行

运行结果:

cmd
1
3

5 if的嵌套结构

代码示例:

python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#水平嵌套
if True:
print(0)
elif False:
print(0)
elif False:
print(0)
elif False:
print(0)
else:
print(0)

#垂直嵌套
if True: #外层if——else结构
if True: #内层if——else结构
print(1)
else:
print(2)
else:
if True: #内层if——else结构
print(3)
else:
print(4)

输出结果:

cmd
1
2
0
1

  if条件分支可以水平嵌套和垂直嵌套,其实这两种写法是可以互相转化的。