python3从零学习-4.4、程序控制语句
程序控制语句就是控制程序执行流程的作用。这个好比走路,就像走到岔路口,我们需要决定往哪个路口继续走,还是回去。这个程序控制语句就是起到决定程序运行路径的。
条件语句
if语句
if 判断条件:
statement
这里的判断条件为真,才执行statement。这个判断条件可以是一个表达式,可以是and/or/not实现的多重判断条件。
a = 1
if a>0:
print(‘if语句条件为真,执行这里’) # a = 1就会执行这句.如果a = 0,那么这句就不会执行。
# 判断条件还可以是多重判断
flag = False
if not flag and (a > 0):
print(‘if语句,多重判断条件为真,执行这里’)
else语句
与if语句搭配使用的else语句,如果if语句的表达式的结果为假,那么执行else语句后的代码。
If 判断条件:
statement1
else:
statement2
如果if判断条件为真,那么执行statement1.
如果if判断条件为假,那么执行statement2.
a = 0
if a > 0:
print(‘a>0,执行这里')
else:
print(‘a<=0,执行这里')
避免“悬挂else”
python使用缩进而不是用大括号来标记代码的边界,不仅帮助强化了代码的正确性,而且还暗中帮助程序员避免了语法上正确的代码中存在潜在的问题。其中一个问题就是臭名昭著的“悬挂else”问题,一种语义错觉。
下面是一段C语言的代码例子,来说明“悬挂else”问题。
if (x == 0)
if (y == 0)
error();
else{
z = x + y;
f(&z);
}
# 此段代码,本意是让第一个if与else配对,但是实际else是跟第二个if配对了,因为C语言的规则就是跟最近的if配对,所以这里引起了问题。
# 正确的做法是把第二个if语句全部用大括号括起来。
# 因为python是用缩进来标记代码边界,所以缩进就控制了代码组的范围,所以python能天然的避免这个“悬挂else”问题。
elif语句
elif是python的else if语句,它检查多个表达式是否为真,并在为真时执行特定的代码块中的代码。和else一样,elif声明也是可选的,然后不同的是,if语句后最多只能有一个else语句,但可以有任意数量的elif语句。
if 判断条件1:
statement1
elif 判断条件2:
statement2
.
.
elif 判断条件N:
statementN
else:
statement(N+1)
因为python没有swtich/case语句,所以这个elif语句用来模拟它。
条件表达式(即“三元操作符”)
c/c++语法中有这样的表达式:C?X:Y,这个被称为三元操作符。C是条件表达式;X是C为True时的结果,Y是C为False时的结果。
python在2.5版本中也加入了类似的语法:X if C else Y。 这个更pythonic化,更简单明了。
X = 0
Y = 1
Z = X if X > Y else Y
print(Z)
# 输出结果:1
# 分析: 表达式X > Y 为False,所以Z = Y ,Z的值为1.
循环语句
while语句
事实上它是一个条件循环语句,与if声明相比,如果if后的条件为真,就会执行一次相应的代码块。而while中的代码块会一直循环执行,直到循环条件不再为真。
while 判断条件:
statement
count = 10
while count > 0:
print(’the index is:’,count)
count -= 1
# 代码里有自减语句,count减到0,while判断条件就为假,不再执行while后的代码块。
# 输出结果:
‘’’
the index is: 9
the index is: 8
the index is: 7
the index is: 6
the index is: 5
the index is: 4
the index is: 3
the index is: 2
the index is: 1
‘''
如果判断条件是True,那么就是无限循环。
for语句
Python中提供了另一个循环语句就是for语句。它提供了python中最强大的循环结构。它可以遍历序列成员,可以用在列表解析和生成器表达式中,它会自动地调用迭代器的next()方法。for语句就是c#语言中的foreach循环语句。
用于序列类型
for letter in 'Luly':
print('current letter:', letter)
# 输出结果:
# current letter: L
# current letter: u
# current letter: l
# current letter: y
遍历列表
shools = ['三墩小学','前横小学','锦绣小学','西湖小学']
for shool in shools:
print('学校名称:', shool)
# 输出结果:
# 学校名称: 三墩小学
# 学校名称: 前横小学
# 学校名称: 锦绣小学
# 学校名称: 西湖小学
# 用列表索引来迭代
shools = ['三墩小学','前横小学','锦绣小学','西湖小学']
for shoolIndex in range(len(shools)):
print('学校名称:', shools[shoolIndex])
# 使用项和索引迭代,用enumerate()函数来实现
shools = ['三墩小学','前横小学','锦绣小学','西湖小学']
for i,shool in enumerate(shools):
print('学校序号:%d,学校名称:%s' % (i, shool))
# 输出结果:
# 学校序号:0,学校名称:三墩小学
# 学校序号:1,学校名称:前横小学
# 学校序号:2,学校名称:锦绣小学
# 学校序号:3,学校名称:西湖小学
break语句
python中的break语句可以结束当前循环然后跳转到下条语句。常用在当某个外部条件被触发(一般通过if语句检查),需要立即从循环中退出时break语句可以用在while和for循环中。
continue语句
不管是对python,C,Java,还是其他任务支持continue语句的结构化语言,一些初学者有这样的一个误解:continue语句“立即启动循环的下一次迭代”。实际上,当遇到continue语句时,程序会终止当前循环,并忽略剩余的语句,然后回到循环的顶端。在开始下一次迭代前,如果是条件循环,那么会验证条件表达式;如果是迭代循环,那么会验证是否有元素可以迭代。只有验证成功的情况下,才会开始下一次迭代。
pass语句
Pass语句只占位,不做任何事情。