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

2023-11-01

八、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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

八、python基础:三种程序控制结构 的相关文章

  • 用于将 cython 中的许多 C++ 类包装到单个共享对象的项目结构

    我在文档 邮件列表和这个问题在这里 https stackoverflow com questions 10300660 cython and distutils 但我想得到一个更直接的答案来解决我的具体情况 我正在通过尝试一点一点地包装我
  • Django 代理模型的继承和多态性

    我正在开发一个我没有启动的 Django 项目 我面临着一个问题遗产 我有一个大模型 在示例中简化 称为MyModel这应该代表不同种类的物品 的所有实例对象MyModel应该具有相同的字段 但方法的行为根据项目类型的不同而有很大差异 到目
  • Python 的键盘中断不会中止 Rust 函数 (PyO3)

    我有一个使用 PyO3 用 Rust 编写的 Python 库 它涉及一些昂贵的计算 单个函数调用最多需要 10 分钟 从 Python 调用时如何中止执行 Ctrl C 好像只有执行结束后才会处理 所以本质上没什么用 最小可重现示例 Ca
  • Django 管理员在模型编辑时间歇性返回 404

    我们使用 Django Admin 来维护导出到我们的一些站点的一些数据 有时 当单击标准更改列表视图来获取模型编辑表单而不是路由到正确的页面时 我们会得到 Django 404 页面 模板 它是偶尔发生的 我们可以通过重新加载三次来重现它
  • SQLAlchemy 通过关联对象声明式多对多自连接

    我有一个用户表和一个朋友表 它将用户映射到其他用户 因为每个用户可以有很多朋友 这个关系显然是对称的 如果用户A是用户B的朋友 那么用户B也是用户A的朋友 我只存储这个关系一次 除了两个用户 ID 之外 Friends 表还有其他字段 因此
  • Python(Selenium):如何通过登录重定向/组织登录登录网站

    我不是专业程序员 所以请原谅任何愚蠢的错误 我正在做一些研究 我正在尝试使用 Selenium 登录数据库来搜索大约 1000 个术语 我有两个问题 1 重定向到组织登录页面后如何使用 Selenium 登录 2 如何检索数据库 在我解决
  • 如何使用 Ansible playbook 中的 service_facts 模块检查服务是否存在且未安装在服务器中?

    我用过service facts检查服务是否正在运行并启用 在某些服务器中 未安装特定的软件包 现在 我如何知道这个特定的软件包没有安装在该特定的服务器上service facts module 在 Ansible 剧本中 它显示以下错误
  • python 相当于 R 中的 get() (= 使用字符串检索符号的值)

    在 R 中 get s 函数检索名称存储在字符变量 向量 中的符号的值s e g X lt 10 r lt XVI s lt substr r 1 1 X get s 10 取罗马数字的第一个符号r并将其转换为其等效整数 尽管花了一些时间翻
  • 如何从网页中嵌入的 Tableau 图表中抓取工具提示值

    我试图弄清楚是否有一种方法以及如何使用 python 从网页中的 Tableau 嵌入图形中抓取工具提示值 以下是当用户将鼠标悬停在条形上时带有工具提示的图表示例 我从要从中抓取的原始网页中获取了此网址 https covid19 colo
  • OpenCV 无法从 MacBook Pro iSight 捕获

    几天后 我无法再从 opencv 应用程序内部打开我的 iSight 相机 cap cv2 VideoCapture 0 返回 并且cap isOpened 回报true 然而 cap grab 刚刚返回false 有任何想法吗 示例代码
  • 如何使用 OpencV 从 Firebase 读取图像?

    有没有使用 OpenCV 从 Firebase 读取图像的想法 或者我必须先下载图片 然后从本地文件夹执行 cv imread 功能 有什么办法我可以使用cv imread link of picture from firebase 您可以
  • 如何在Python中获取葡萄牙语字符?

    我正在研究葡萄牙语 角色看起来很奇怪 我怎样才能解决这个问题 代码 import feedparser import random Vou definir os feeds feeds conf feedurl http pplware s
  • 添加不同形状的 numpy 数组

    我想添加两个不同形状的 numpy 数组 但不进行广播 而是将 缺失 值视为零 可能最简单的例子是 1 2 3 2 gt 3 2 3 or 1 2 3 2 1 gt 3 2 3 1 0 0 我事先不知道形状 我正在弄乱每个 np shape
  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe
  • 解释 Python 中的数字范围

    在 Pylons Web 应用程序中 我需要获取一个字符串 例如 关于如何做到这一点有什么建议吗 我是 Python 新手 我还没有找到任何可以帮助解决此类问题的东西 该列表将是 1 2 3 45 46 48 49 50 51 77 使用
  • Python:如何将列表列表的元素转换为无向图?

    我有一个程序 可以检索 PubMed 出版物列表 并希望构建一个共同作者图 这意味着对于每篇文章 我想将每个作者 如果尚未存在 添加为顶点 并添加无向边 或增加每个合著者之间的权重 我设法编写了第一个程序 该程序检索每个出版物的作者列表 并
  • Scrapy:如何使用元在方法之间传递项目

    我是 scrapy 和 python 的新手 我试图将 parse quotes 中的项目 item author 传递给下一个解析方法 parse bio 我尝试了 request meta 和 response meta 方法 如 sc
  • 发送用户注册密码,django-allauth

    我在 django 应用程序上使用 django alluth 进行身份验证 注册 我需要创建一个自定义注册表单 其中只有一个字段 电子邮件 密码将在服务器上生成 这是我创建的表格 from django import forms from
  • Rocket UniData/UniVerse:ODBC 无法分配足够的内存

    每当我尝试使用pyodbc连接到 Rocket UniData UniVerse 数据时我不断遇到错误 pyodbc Error 00000 00000 Rocket U2 U2ODBC 0302810 Unable to allocate
  • 如何使用 Pycharm 安装 tkinter? [复制]

    这个问题在这里已经有答案了 I used sudo apt get install python3 6 tk而且效果很好 如果我在终端中打开 python Tkinter 就可以工作 但我无法将其安装在我的 Pycharm 项目上 pip

随机推荐