编程语言有三大基本结构,即顺序结构、选择结构和循环结构。
顺序结构
在python中,程序是从上到下依此执行的,当然,遇到函数会进入函数内部执行,本质上也是一个从上到下的执行逻辑。
接下来重点介绍选择结构与循环结构,在python中,使用条件语句实现的。
条件语句实现选择结构
首先介绍条件语句的类型。
1.if型
if 判别式:
(缩进)代码语句
最简单的条件结构,如果if后面为True,则执行,这里需要特别注意,冒号是不能省略的,因为冒号相当于一个“声明”,告诉解释器后面跟着的是条件代码块,同理,缩进也必须有,这样解释器就知道代码之间的关系。
补充知识
在python中,以缩进来表示代码之间的关系,缩进量相同的代码属于同一作用域,这种功能类似于C++中的花括号。一般而言,python的缩进为4个空格。在pycharm中,可以将tab设置为4空格,这样编程时会更加方便。
2 if-else型
结构如下:
if 判别式:
(缩进)代码语句1
else:
(缩进)代码语句2
与if型相比,多了一个分支出来,当if后面的判别式为True时,执行代码语句1,否则执行代码语句2。需要注意,else后面同样有冒号。
3. if-elif-else型
结构如下:
if 判别式1:
(缩进)代码语句1
elif 判别式2:
(缩进)代码语句2
elif 判别式3:
(缩进)代码语句3
else:
(缩进)代码语句4
这种类型的条件语句有多个选择的判别式,但是要注意,判别式是按顺序来的,也就是说,当判别式1和判别式2同时满足式,由于判别式1在前面,因此只会执行代码语句1,然后就直接退出条件语句了。另外,中间的elif其实跟elseif相同,当不满足判别式1时,再接着看是否满足其他条件。中间可以有多个elif,但最后只能有一个else,表示上面所有条件都不满足时,则执行else下的代码块。
下面就上面三种条件语句的类型进行举例
# region if条件语句
a = 10
b = 5
if a > b:
print('a is bigger')
# 重新对b赋值
b = 10
if a > b:
print('a is bigger')
else:
print('a is not bigger than b')
if a > b:
print('a is bigger')
elif a == b:
print('a is equal to b')
else:
print('a is smaller')
# endregion
循环语句实现循环结构:
循环语句有两种形式,分别为while形式和for形式。
while循环
while结构如下:
1.while型
while 判断条件:
(缩进)代码语句
表示当条件为True时,执行代码语句,否则,跳出循环
2.while-else型
while 判断条件:
(缩进)代码语句1
else:
(缩进)代码语句2
表示当条件为True时,执行代码语句1,否则,执行else后的代码语句2.
# region while循环举例
s = 100
s_sum = 0
while s > 0:
s_sum += s
s -= 1
else:
print('calculation done!')
print(s_sum) # 输出5050
# endregion
for循环
for循环语句用于遍历可迭代序列,依次访问序列中的值并赋值给循环变量,循环变量会在循环体中进行处理。
结构如下:
1.for型
for each_i in sequence:
(缩进)代码语句
2.for-else型
或者与else一起使用
for each_i in sequence:
(缩进)代码语句1
else:
(缩进)代码语句2
常与for循环搭配使用的函数
range函数,用于产生一个可迭代的数据结构。
enumerate函数,用于同时取出序列的值和其对应的索引值。
break和continue
在循环体中,常用break和continue来跳出循环,其中,break是跳出整个循环,而continue是用于跳出本次循环,即continue后面的语句不再执行,直接回到for或者while重新判断循环条件。break和continue常与条件语句if搭配使用。
# region for 循环
a_list = [1, 3, 4, 2, 1000, 5, 2, 5, -8, 6, 9]
sum_list = 0
# 计算正数之和,如果有异常值(大于100,或者负数)则跳过
for each_index, each_value in enumerate(a_list):
if each_value > 100 or each_value < 0:
print('value is not normal, and the index is', each_index)
continue
else:
sum_list += each_value
else:
print('calculation done!')
print(sum_list) # 输出37
# endregion