前言
本篇主要讲结构化程序设计中三种基本结构在Python中是如何实现的,以及相关的流程控制。
我们知道计算机的程序设计包括面向对象和面向过程。面向对象程序设计在细节实现上,也需要面向过程的内容。而结构化程序设计就是面向过程的编程方法:顺序结构,分支结构,循环结构(三种基本流程)。而顺序结构就是根据程序从上到下按照顺序执行的代码顺序。下面就来介绍其他的流程控制:
--------------------------------------------------------------------------------------------------------------------------------
目录
一、分支结构
二、循环结构
1.for循环结构:
2.条件循环while:
3.控制循环流程的语句:
三、pass以及循环结构的else语句
一、分支结构
if语句实现分支结构,格式如下:
1.简单分支语句:if
if <条件(逻辑表达式)>:
...(if执行语句块)
...(if执行语句块)
...
2.选择分支结构:if else
if <条件(逻辑表达式)>:
...
else:
...
...
3.多分支结构:if elif ... else
if <条件(逻辑表达式)>:
...
elif <条件>:
...
elif...
...
...
else:
...
比如利用分支结构实现一个输入年和月输出当月天数:
year = eval(input("请输入年份:"))
month = eval(input("请输入月份:"))
day = 0
if month == 2:
if year % 400 == 0 or (year % 4 == 0 and year % 100 != 0): # 闰年
day = 29
else: # 平年
day = 28
elif month == 1 or month == 3 or month == 5 \
or month == 7 or month == 8 or month == 10 or month == 12: # 大月
day = 31
else: # 剩下的全是小月了
day = 30
# print("{}年{}月一共有{}天".format(year, month, day))
print("%d年%d月一共有%d天" % (year, month, day))
特别的,对于如下结构:
a= b if 条件 else c
如果满足if条件,就将b给a,否则就把c给a。有点类似于C/C++三目运算符?:
比如:
a = 3
b = 4
c = 0
c = a if a > b else b
print(c)
注意Python下没有?:的用法哦。
二、循环结构
循环结构是在一定的条件控制下,反复执行其代码块的控制结构。Python中常见几种循环结构格式如下:
1.for循环结构:
for <var> in <seq>:
...
解释:var是一个变量,seq是一个序列。可以理解为var逐一从seq提取元素,in在之前的字符串那里了解了一点点,也就是判断是否在此seq内,在也就是循环中就是继续执行,不在也就是遍历完了就False就退出。seq序列可以是字符串,列表,文件,或者range()函数等。
range()函数:Python中的内置函数,用于创建一个整数列表,一般用于for循环中(注意虽然是列表,但是类型还是range类型,想转换为列表需要list()进行转换哦)
格式:range([start,] stop[, step])
创建区间[start,stop)的列表,step表示每一次递增多少,默认为1。start默认从0开始。
ran1 = range(0, 5) # [0 1 2 3 4]
ran2 = range(0, 5, 2) # [0, 2, 4]
for i in ran1:
print(i, end="")
print()
for j in ran2:
print(j, end="")
print()
str1 = "abcde"
for z in str1:
print(z)
当然上面只是一个演示,平时可以直接在for循环里ran1写成range即可。
下一利用for做一个应用:输入一个整数n,计算从1到n的阶乘之和:
def factorial(n):
sum1 = 0
num = 1
for i in range(1, n + 1):
num *= i
sum1 += num
return sum1
n = eval(input("请输入n值:"))
print("从1!到{}!的阶乘和为{}".format(n, factorial(n)))
def是定义函数的意思,返回值类型不用写,参数为n,在传参的时候识别类型。
2.条件循环while:
while <条件>:
...
每次循环时,判断条件是否为True,是就继续循环,否则就退出循环语句。
下面利用while循环,对列表里面的值进行头尾互换:
list1 = [1, 2, 3, 4]
head = 0
tail = len(list1) - 1
while head < tail:
list1[head], list1[tail] = list1[tail], list1[head]
head += 1
tail -= 1
print(list1)
其中list1[head], list1[tail] = list1[tail], list1[head]语句就是表示head下标和tail下标元素互相交换的意思。
3.控制循环流程的语句:
break:结束循环。
continue:结束本次循环,执行下一次循环。
三、pass以及循环结构的else语句
pass语句是空语句的意思,为了保持结构的完整性设计的。意思时将来会有程序语句代替pass所在位置,所以pass先将位置占好,提高程序的可读性。
在其他语言中,else只会在分支结构出现,但是在Python中,为了对本次循环结束进行一些特殊说明,那么就可以对循环结构使用else语句,会在此循环结束后执行里面的内容。当然,如果存在break也会跳过else里面的内容:
# 比如我们识8为不正常数据,需要break
for i in range(8):
if i == 8:
break
else:
print("正常结束")
for i in range(9):
if i == 8:
break
else:
print("正常结束")
可以发现只打印了一次正常结束,就说明第二个循环发生了break。