Python基础—程序的控制结构
Python基础---程序的控制结构
一、程序流程成图
程序流程图是一种表达程序控制结构的方式,主要用于关键部分的程
序分析和过程描述,由一系列图形、流程线和文字说明等组成。
(一)顺序结构
顺序结构是程序按照代码的编写顺序依次执行的一种运行方式。
程序流程图:
(二)程序的分支控制结构
1:单分支结构
程序流程图表示:
示例:
'''
使用方式:
if <条件>:
<语句块>
'''
number=eval(input("请输入一个数字"))
if number>=1:
print("数字是正数")
if number<0:
print("数字是负数")
运行结果:
2.二分支结构
程序流程图:
示例:
'''
使用方式:
if <条件>:
<语句块 1>
else:
<语句块 2>
'''
words = input("您认为顾安是大佬吗?")
a = "是"
if words == a:
print("您真是个善良美丽的人呢")
else:
print("快打是!")
运行结果
3.多分支结构
程序流程图:
实例:
'''
使用方式:
if <条件 1>:
<代码块 1>
elif <条件 2>:
<代码块 2>
elif <条件 3>:
<代码块 3>
... ...
else:
<代码块 n>
'''
a=eval(input("输入一个1-4的数"))
if a==1:
print("您输入的数字是1")
elif a==2:
print("您输入的数字是2")
elif a ==3:
print("您输入的数字是3")
elif a == 4:
print("您输入的数字是4")
运行结果:
`
4.分支嵌套
程序流程图:
示例:
number=eval(input("请输入一个数字"))
if number<18:
print("未成年")
else:
if 18<=number<30:
print("年轻人")
elif 30<= number<60:
print("中年人")
else:
print("老年人")
运行结果:
(三)程序的循环结构
1、while循环
程序流程图:
示例:
'''
使用方式:
while (<条件>):
<代码块 1>
<代码块 2>
'''
a = eval(input("请输入一个数字:"))
while a // 100 >= 1:
print("您输入的数大于100")
a = a % 100 # 将数字减少到小于100
# 在循环结束后,如果a不为0,说明输入的数字原本小于100
if a != 0:
print("您输入的数字小于100")
运行结果:
2.while 循环扩展模式
程序流程图:
示例:
'''
使用方式:
while <条件>:
<语句块 1>
else:
<语句块 2>
'''
a = eval(input("请输入一个数字:"))
while a %2 ==1:
print("您输入的数为奇数")
break
# 在循环结束后,如果a不为0,说明输入的数字原本小于100
else:
print("您输入的数字是偶数")
运行结果:
3.for 循环
从遍历结构中逐一提取元素,放在循环变量中,对于每个提取的元素执行一次语句块。for语句的循环执行次数是根据迭代器中元素个数确定的。遍历结构可以是字符串、文件、range()函数或其他组合数据类型等。
程序流程图:
示例:
'''
使用方式:
for <element> in <iterable>:
<block>
for 循环经常和 range()函数一起使用,使用方式如下:
for <循环变量> in range(<循环次数>):
<语句块>
'''
words="顾安在学习Python"
for a in words:
print(a,end='')
print()
for a in range(3):
a=a+1
print(a,end=",")
运行结果:
4.for 循环扩展模式
程序流程图:
示例:
'''
使用方式:
for <element> in <iterable>:
<语句块 1>
else:
<语句块 2>
'''
# 提示用户输入名字,并获取输入
x = input("{}谁在学习python?".format(""))
words=x+"在学习Python"
# 定义一个名字变量
a = "张"
# 检查用户输入的名字是否与定义的名字相同
for char in x:
if char == a[0]:
print(words)
break
else:
# 如果循环正常结束,说明用户输入的是"顾安"
print("不是张在学习,是{}".format(words))
# 输出一个换行符
print()
运行结果:
二、循环控制语句
(一)continue 语句
用来结束当前当次循环,即跳出循环体中下面尚未执行的语句,
但不跳出当前循环
示例:
for s in "love python":
if s=="p" or s=='y':
continue
print(s,end='')
运行结果
(二)break 语句
示例:
for s in "love python":
if s=="p" or s=='y':
break
print(s,end='')
运行结果:
(三)continue语句和break 语句的区别
continue语句是跳出本次循环不跳出循环体,break语句是跳出循环体。
三、程序的异常处理
实际编程中,程序一般对输入有一定的要求,当实际输入不满足程序要求时,可能会产生程序的运行错误。
这类由于输入与预期不匹配造成的错误有很多种可能,不能逐一列出可能性判断。为了保证程序运行的稳定性,这类运行错误应该被程序捕获并合理控制。
Python 提供了不同形式的异常处理结构,基本思路一致:运行代码,如果没有问题就正常执行,如果发生错误就尝试捕获和处理,最后解决不了程序崩溃。
(一)try…except…
Python 处理异常程序最简单的形式就是 try…except…,类似于
单分支选择结构。
'''
使用语法为:
try:
可能会发生异常的代码,先执行以下试试看
except <异常类型>:
如果 try 中代码抛出异常并被 except 捕获,执行此处代码
'''
s = input("Please input number:")
while True:
try:
s = int(s)
print(s)
break
except ValueError:
print("Please input a number!")
s = input("Please input number:")
(二)try…except…else…
该结构可以看为双分支结构,else 中的代码只有在 try 中代码没有
引发异常的情况下执行。
示例:
s = input("Please input number:")
while True:
try:
s = int(s)
except ValueError:
print("Error!!!")
s = input("Please input number:")
else:
print(s)
break
运行结果:
(三)try…except…finally…
该结构中,无论 try 代码中是否发生异常,finally 语句块中的代码总会执行。
示例:
'''
使用语法为:
try:
可能会发生异常的代码
except <异常类型>:
处理异常代码
finally:
总是执行
'''
def calc(a, b): # 自定义函数
try:
print(a / b)
except ZeroDivisionError:
print("第二个参数不能为 0!")
finally:
print("函数执行完成")
c= eval(input("请输入一个数"))
calc(5, c)
运行结果:
(四)捕捉多种异常的异常处理结构
实际开发中,同一段代码可能会抛出多种异常,并且针对不同异常进行相应的处理。
'''
使用语法为:
try:
可能会发生异常的代码
except <异常类型 1>:
处理异常类型 1 的代码
except <异常类型 2>:
处 理异常类型 2 的代码
'''
def calc(a, b):
try:
print(a / b)
except ZeroDivisionError:
print("ZeroDivisionError!,第二个数不能为0!")
except TypeError:
print("TypeError!,请输入数字!")
else:
print("未出现异常!")
finally:
print("函数执行完成")
calc(5, 2)
calc('c', 2)
calc(5, 0)
运行结果: