程序流程图是用一系列图形、流程线和文字说明来秒速程序的基本操作和控制流程,它是程序分析和过程描述的最基本方式
其程序流程图的基本要素为起始框、判断框、处理框、输入/输出框、注释框、流向线和处理点共7种
由这7种要素构成了最基本的三种程序结构:顺序结构、分支结构和循环结构
1.顺序结构是按照线性顺序执行的一种方式,由语句块1和语句块2表示一个或一组顺序执行语句
2.分支结构是根据给出的条件判断结果而选择不同执行的路径最简单的是单分支结构,二分支结构和二分支结构组合形成多分支结构
3.循环结构是程序根据条件判断结构后反复执行的一种运行方式,循环结构包括条件循环和遍历循环结构
标准的程序流程图包括了开始和结束、输入或输出、判断或循环,比如有输入输出和判断结构的程序流程图如下
I:输入(Input)是一个程序的开始,程序要处理的数据有多种来源,Python程序中有控制台输入、内部参数输入和文件输入等等
控制台输入:当程序与用户进行交互时,程序会提示用户输入数据,这里用到了input(<提示字>)函数简单的作为与用户交互的手段,该函数会返回用户输入的数据
内部参数输入:以程序内部定义的初始化变量为输入
文件输入:将文件作为程序数据的输入来源,例如,Excel文件数据的统计等等
P:处理( Process)是程序对输入数据进行计算产生输出结果的过程,计算问题的处理方法统称为“算法”
O:输出(Output)是程序输出运算成果的方式,包括控制台输出、图形输出和文件输出等等
控制台输出:通过程序运行环境的命令行打印输出结果,这里的“控制台”可以理解为启动程序的环境,例如:Windows中的命令行工具(CMD)、IDLE(集成开发环境)工具
图形输出:在计算机中启动独立的图形输出窗口,根据程序绘制运算结果,例如:运用turtle库进行绘图
文件输出:以生成新的文件或修改已有文件方式输出运行结果
例如以圆面积的计算用IPO描述如下:
输入:圆半径R
处理:计算圆面积area=πRR
输出:圆面积area
R = eval(input("请输入圆的半径(单位:CM):"))
area = 3.14*pow(R,2)
print("圆面积为:{}CM^2".format(area))
1.单分支结构
Python中if结构的语法格式:
if <条件>:
<语句块>
这里要特别注意这个冒号:和语句块前面的缩进,可以理解为冒号是引导if中的语句去执行,根据前面的控制流程图可以知道,当条件的判断结果为真(True)时,执行语句块里的语句,当条件的判断结果为假(False)时,则语句块中的语句会被跳过
而用于Python中的关系操作符或者说是比较运算符(共有6个),经常用于条件判断中
操作符 | 含义 |
---|---|
> | 大于 |
< | 小于 |
>= | 大于或者等于 |
<= | 小于或者等于 |
== | 是否相等 |
!= | 是否不相等 |
我们知道了基本的几个关系操作符后,语句的赋值是用的是等于号(=)
a=5
print(a)
上面的含义是把5这个数值赋值给了a变量,这时a变量的值是5
2.二分支结构
单分支结构是只有一个if关键词,那么二分支结构由if-else两个分支组成,真(True)则执行if里的语句块,反之假(False)执行else里的语句块
语法格式:
if <条件>:
<语句块1>
else:
<语句块2>
这时我有三个变量要比较分别是a=5,b=10,c=10
a=10
b=5
c=10
#-------------------------------
if a>b:
print("a大于b\n")
else:
print("a小于等于b\n")
#-------------------------------
if a<b:
print("a小于b\n")
else:
print("a大于或等于b\n")
#-------------------------------
if a>=c:
print("a大于或等于c\n")
else:
print("a小于c\n")
#-------------------------------
if b<=c:
print("b小于或等于c\n")
else:
print("b大于c\n")
#-------------------------------
if a==c:
print("a等于c\n")
else:
print("a不等于c\n")
#-------------------------------
if a!=b:
print("a不等于b\n")
else:
print("a等于b\n")
输出
a大于b
a大于或等于b
a大于或等于c
b小于或等于c
a等于c
a不等于b
3.多分支结构
用if-elif-else描述多分支结构,语句格式如下:
if <条件1>:
<语句块1>
elif <条件2>:
<语句块2>
elif <条件3>:
<语句块3>
……
else:
<语句块N>
四.程序的循环结构
根据循环执行次数的确定性,循环可以分为确定次数和不确定次数循环,确定次数循环称为“遍历循环”,不确定次数循环称为“条件循环”;遍历循环结构中用元素个数来体现,具体用for语句;条件循环是通过条件判断是否继续执行循环,采用while语句
1.遍历循环
遍历循环用关键字for来实现“遍历”,基本使用方法为:
for <循环变量> in <遍历结构>:
<语句块>
最重要的是遍历结构,因为for语句的循环执行次数是根据遍历结构中元素个数决定的,遍历循环中的循环变量从遍历结构中逐一提取元素,当提取一个元素时执行一次语句块,直到遍历结构中元素都取完
遍历结构可以是range()函数、字符串、组合数据类型和文件等等
range()函数是能生成一组数字序列使用方法有两种:
range(stop)
range(start, stop[, step])
range(stop)是直接用来作简单的循环,例如:
for i in range(5):
print(i,end=' ')
#---------------------
for i in range(1,5,2):
print(i,end=' ')
#---------------------
for i in "Python":
print(i,end='')
输出
0 1 2 3 4
1 3
Python
除此之外for循环还能配合else扩展使用,else是指循环正常执行并且结束后才会执行,形成for-else结构:
for s in "BIT":
print("循环中:"+s)
else:
print("循环正常结束")
输出
循环中:B
循环中:I
循环中:T
循环正常结束
2.条件循环
很多时候解决问题无法在执行之处确定遍历结构,需要根据条件进行循环,一直执行到不满足条件则结束,基本使用方法如下:
while <条件>:
<语句块>
其中条件的判断与if语句一样,真(True)执行里面语句块或者假(False)跳过里面语句块,执行一次语句块后,再回到条件判断那里,如果True则继续执行语句块,False则跳过while只要条件一直满足,程序就能无限循环执行下去直到条件不满足
c=0
while c < 3:
print(c)
c += 1
输出
0
1
2
当然,while循环结构也可以构成while-else结构,如下:
while <条件>:
<语句块1>
else:
<语句块2>
当while循环正常执行结束后,程序会继续执行else语句中的内容,既else结构只在while循环正常执行结束后才会执行里面的语句块
c=0
while c < 3:
print(c)
c += 1
else:
print("循环正常结束")
输出
0
1
2
循环正常结束
循环结构有两个保留字break、continue,它们用来控制循环执行,break用来跳出最内层的for或while循环结构,如果循环里嵌套循环,在最里面那层使用break,只会跳出最内层的循环然后继续执行接下来的循环,所以说哪一层使用了break就跳出哪一层循环;continue的使用方法一样,只是它是用来跳出当前这一次循环
for s in "PYTHON":
if s == 'H':
break
print(s,end='') #end=''是指打印完成后,在末尾接一个空字符,从而不换行
#----------------------
for s in "PYTHON":
if s == "Y":
continue
print(s,end='')
输出
PYT
PYHON
在for循环中也是有else用法的,在for-else结构中只在一种条件下执行else里的语句,既循环正常遍历了所有内容或由于条件不成立而结束循环,没有因为break或return关键字而退出,所以只有使用了continue关键字能执行else
while-else和for-else结构都是只有使用了continue关键字能执行else,break关键字会跳出当层循环,当使用了else时,可以把while、for与else看成一个整体
for s in "PYTHON":
if s in "PYT":
continue
print(s,end='')
else:
print("循环正常完成")
#------------------------
for s in "PYTHON":
if s == "H":
break
print(s,end='')
else:
print("循环正常完成")
输出
HON循环正常完成
PYT