八、python基础:三种程序控制结构

八、python基础:三种程序控制结构

一、程序的分支结构

1、单分支结构:
单独一个if进行条件判断

a = 1
if a == 1:
    print('正确')

2、二分支结构:
if…else进行条件判断

a = 1
if a == 1:
    print('正确')
else:
    print('错误')

3、多分支结构:
if…elif…else

a = 1
if a == 0:
    print('小于1')
elif a == 1:
    print('等于1')
elif a == 2:
    print('等于2')
else:
    print('看不懂了')

二、程序的循环结构

1、遍历循环:for
一次遍历循环就是把str的元素都扫描一遍

str = 'abcd'
for s in str:
    print(s)

输出结果:
在这里插入图片描述
2、无限循环

i = 1
while True:
    print(i)
    i += 1
    if i == 3:
        break

输出结果:
在这里插入图片描述
代码意思:先让i等于1,接着无限循环打印i的值,并且每打印一次,就给i加1,最后当i的值等于3的时候,使用break跳出当前的无限循环,程序结束。

while True代表一个无限循环,注意在使用的时候需要给它设置跳出循环的条件,不然程序就会一直运行下去,占用你的cpu资源。

3、break和continue循环控制
break和continue的作用都是用来结束循环的,不同的是,每一个循环程序一般是会有多轮循环的。
break就是用来跳出整个循环的,而continue是用来跳过这个循环的某一轮。

就好比如让一个陀螺转圈,扔一次它会转很多圈,break指令的作用就是让它转到某一圈时,遇到了break就停下来了,不再继续转圈了。而continue的作用,就是告诉它,这次转圈,在转到某一圈时,你可以停下来不转了,但是停了一次后还是要继续转圈的。

4、for循环和break循环的区别:
for循环是遍历一个结构,这个结构可以是字符串或者列表。但前提是你这个结构必须是有意义的,也就是要先给它赋值,即使你赋值为空的,程序也不会报错,但是遍历的时候不会得到什么结果,遍历一个空字符串或空列表的时候,程序不会执行for循环下面的代码。

如果字符串和列表不是空的,那就会把它里面的元素一个一个扫描一遍。
如果里面的元素都已经扫描一遍了,就自动结束循环了。

while True是一个无限循环,即使你什么东西都没有,它也可以一直运行下去不停的,除非有个指令让它停下来。

它们的区别是一个有限一个无限,一个先要给它东西才干活,一个不用给它东西就能干活。共同点是都能通过break或者continue来控制它的结束。

三、程序的异常处理

有时候我们可以预计到在某些位置可能会出现报错,但报错会导致程序停止运行,后面的处理就不会继续执行了,这时候我们可以使用异常捕获,当捕获到程序报错时,根据我们的需要对异常进行处理,你可以选择pass跳过,也可以对异常进行处理,或者收集错误信息,反馈给你。

1、使用try: … except: …可以对异常进行处理:

如以下代码
先输入一个英雄名,接着使用try尝试进行数据库查询,但是有可能会查不到,查询不到它会抛出一个异常,如果我们没有使用try…except来进行处理的话,遇到异常这里程序就结束了。
但是我们使用了except Exception as ret,就是告诉程序,遇到了你可以识别的错误,你就把这错误收集起来,用ret来命名,接下来用print(ret),就能把它输出在控制台了。

执行的顺序:当try下方的某一行报错了,它就立即停止,跳到except下方的代码。

hname = input("请输入您要恢复的英雄名:")
try:
    hero = self.model.objects.get(hname=name)
except Exception as ret:
    print(ret)
    pass

try…finally…跟try…except…有什么区别呢?

finally是无论try下方的代码是否会出现异常,最终都会执行finally下方代码的。
而except是只有当try下方的代码报错了,才会去执行。不报错就不执行。

try:
    hero = self.model.objects.get(hname=name)
finally:
    print('无论有没有异常我都会执行')
    pass
发布了47 篇原创文章 · 获赞 74 · 访问量 7894

猜你喜欢

转载自blog.csdn.net/Jacky_kplin/article/details/104781928
今日推荐