Python第四章-流程控制
流程控制
在以前的代码中,所有的代码都是交由 Python 忠实地从头执行到结束。但是这些远远不够。很多时候需要根据不同的情况执行不同的代码。
如果你想改变这一工作流程,应该怎么做?
就像这样的情况:你需要程序作出 一些决定,并依据不同的情况去完成不同的事情,例如依据每天时间的不同打印出 '早上好' 'Good Morning' 或 '晚上好' 'Good Evening'?
需要用到流程控制!
python 共提供了 3 种流程控制: if
、while
、for...in
一、分支语句
所谓分支语句,就是条件满足,才会执行某个分支。
if
翻译成中文就是如果的意思。
在各大编程语言里面,if
语句应该是最为著名的语句。
if
用来判断一个条件是否为 True
, 如果是 True
执行相应的代码,如果是 False
执行另外的代码(else
语句,可选)。
1.1 if语句用法
语法:
if 条件:
#代码块1
elif 条件:
#代码块2
elif ...
else:
#代码块3
说明:
- python 的语法结构与其他语言差别很大。python 完全是靠缩进来组织代码结构。
if、elif、else
代码行结束的时候要使用:
if
后面跟的是条件,如果是true
就执行代码块1。代码块1相比if
一定要缩进,才能算是if
代码块中的内容。缩进的时候,建议总是以 4 个空格为单位。 把编辑器或者IDE 工具的tab
键设置为 4 个空格。- 如果
if
后面的条件是False
,则会判断紧接着的elif
的条件,如果是True
则执行代码块2。否则就继续判断后面的条件。 - 如果前面的所有条件都是
False
,则 执行else
中的代码块 3。 elif、else
语句是可选的。可以只有if
, 但是不能只有elif
或else
- 条件理论上可以是任意类型的,
False、0、[]、{}、()、""、None
当做False
来用,其余做True
来用。 但是在使用的时候最好直接用True 或 False
- 一旦有一个代码块执行结束后,整个
if
语句也就运行行结束了。
num = 50
# 把从键盘读取到的字符串形式的数字,转换成整数
guess = int(input("请输入一个1-100的整数"))
if guess > 50:
print("你输入的是", guess, "比", num, "大了!")
elif guess == 50:
print("你输入的是", guess, "恭喜你猜对了!")
else:
print("你输入的是", guess, "比", num, "小了!")
结果:
1.2 if语句嵌套
if
语句也可以嵌套。嵌套的时候一定要注意缩进!_
# 下面的代码从键盘输入三个整数,然后判断并输出最大值
num1 = int(input("请输入第 1 个整数:"))
num2 = int(input("请输入第 2 个整数:"))
num3 = int(input("请输入第 3 个整数:"))
if num1 > num2:
if num1 > num3:
print("你输入的最大值是:" + str(num1)) # str()函数,可以把其他类型数据转换成字符串
else:
print("你输入的最大值是:" + str(num3))
else:
if num2 > num3:
print("你输入的最大值是:" + str(num2))
else:
print("你输入的最大值是:" + str(num3))
python 中没有 switch
语句。因为 switch
能做的, if
都可以做。 python 的设计理念就是精简!有一种方法能做的,绝不会提供第二种方法!
二、循环语句
在编程中还有一个更重要的需求,就是重复的执行一些动作。这个时候就需要用到循环语句。
python 共提供了 2 种循环语句。 while
循环和 for...in
循环。
while
用来做一些通用性的循环。 而 for...in
用来迭代对象(列表、元组、集合等)中的内容。
我们今天只学习 while
, for...in
待讲完数据结构之后再进一步学习。
2.1 while 基本用法
while
循环语法:
while 条件:
#循环体
else:
#条件为 False 时执行
说明:
while
的条件与if
的条件是一样的。- 执行流程:先判断
while
后的条件,如果是True
则开始执行循环体,执行完毕后,再去判断 条件,如果True
继续执行循环体... while
中的else
是可选的。这和其他语言的很大的区别,其他的语言中while
中没有else
。 当while
中的条件为False
时,开始执行else
中语句。- 如果提供了
else
语句,则else
语句一定执行。除非你是通过break
语句退出的循环。
# 输出 0 - 9
i = 0
while i < 10:
print(i)
i = i + 1
else:
print("else 语句:" + str(i))
2.2 break
break
用在循环中(while 和 for...in
都可以用),用于提前结束整个循环。
有一点需要注意:如果是 break
结束的循环,else
语句也不会执行。
i = 0
while i < 10:
print(i)
i = i + 1
if i == 6:
break
else:
print("else 语句:" + str(i))
2.3 continue
continue
用来提前结束本轮循环,然后继续判断,开始下一轮循环。
break
语句和 continue
语句的区别:
就像在打游戏循环赛,break
是彻底退出比赛,洗洗睡觉。continiue
是在打的过程中提前把这个一局比赛结束,然后开始下一局比赛。
# 输出偶数
i = 0
while i < 10:
i = i + 1
if i % 2 == 1:
continue # 如果是奇数,则结束本轮循环,本轮后面的 print() 方法不再执行。
print(i)
else:
print("else 语句:" + str(i))