[oeasy]python0144_try的完全体_否则_else_最终_finally

news2024/12/24 10:09:32

try的完全体

回忆上次内容

  • 上次细化了主控程序(main.py)
    • 导入(get_fruits.py)
    • 处理(process.py)
    • 输出(output.py)
  • 使用了 try 结构
    • try
    • except
    • 发现异常就报错
  • 输入部分的错误
    • 应该在 输入部分来报
  • 具体怎么报呢?🤔

完善输入

  • 输入的时候
    • 应该包括
      • 对于输入内容的验证
    • 于是 再修改代码

图片描述

  • 输入代码 分成了
    • 输入 a
    • 输入 b

运行结果

  • 如果 输入错误数据
    • 会在get_fruits.py中报错

图片描述

  • 如果 输入正确
    • 没有输出 确认信息

图片描述

继续修改

图片描述

  • 测试通过

图片描述

  • 这里面有个 else
    • 应该如何理解呢?

查询帮助

图片描述

  • 在游乐场帮助 里面有关于
    • try 的比较明确的介绍

图片描述

else

  • else的意思是否则
    • 就是没有发现异常时执行的
  • else 是一个可选(optional)子句
    • 如果try中发现了指定异常
      • 就从try中发现错误的位置跳出来
      • 只执行except部分
      • 不执行else部分
    • 如果try中没有发现指定的异常
      • 在执行完try中的内容之后
      • 不执行 except 部分
      • 只运行 else 部分

图片描述

  • 每个输入部分 都包括

    • 提示和输入
      • input(“xxx”)
    • 尝试转化为整型数字
      • try
      • int
    • 异常处理
      • except
    • 无异常输出
      • else
  • try 语句当中

    • 除了 else 之外
    • 还有 finally

综合一下

  • 这就是 try 的完全体

图片描述

  • 注意!
    • 都要有英文半角的冒号
    • 都要通过 4 个字符的缩进控制范围

finally

  • finally如果存在
    • 他是一个收尾的语句

图片描述

  • try 之后
    • 要么 except
    • 要么 else
    • 无论是except 还是 else
      • 最后 总要执行finally
  • 如果执行过程中
    • 还有任何的异常
      • 但是这个异常没有被处理
      • 那么就把这个异常先存着
      • 等待finally执行之后
      • 再抛出这个异常
    • 如果遇到return break continue之类强制跳转语句
      • 这个异常就被忽略了
  • 这如何理解?
  • 新建一个test.py进行测试

理解finally

  • try里面有一个ValueError
    • 不执行后面的d = i / 0
    • 跳到except

图片描述

  • except中
    • 没有ValueError的处理办法
    • ValueError没有被处理
    • 于是ValueError就存着
  • 由于出现了异常
    • 已经进入了except
    • 无法进入else
  • 最后进入finally执行
    • 输出了At Last
  • 执行外finally语句块
    • 才把这个ValueError最后抛出来

图片描述

  • 这就是finally的执行逻辑
  • 回到main.py

整体结构

  • 这个结构就是
    • 典型的面向过程程序设计方法

图片描述

  • 有一个主要的流程控制模块 main.py
    • 就像python语言这个声明
      • 有一个主要的决策者Guido一样

仁慈的独裁者

  • 彻底的仁慈
    • 意味着 没有主见和行动力下降
  • 彻底的独裁
    • 则会 失去广泛的帮助

图片描述

  • 仁慈和独裁像
    • 是矛盾的两面
    • 但是Guido却很好地平衡了两者
  • 除了Guido之外
    • 很多开源项目的老大
      • 也有类似的特性

图片描述

  • Guido是如何成长的呢?

扩展视野

  • Guido 利用假期去美国做一些WorkShop
    • 美国硅谷是当时it的潮头

图片描述

  • 很早接触到了
    • 互联网的发展趋势

互联网

  • Guido做了一个浏览器grail

图片描述

网络集聚

  • 网络的能量越来大
    • 这为python的发展做了很好的准备
    • 媒介
      • 从报纸、杂志、电视
      • 发展到邮件、论坛和浏览器

图片描述

  • 有人 就有 应用
    • 有应用 就更有 人
    • 于是会形成 正反馈
    • 有了社区 就会有更多的人 加入社区
  • 其实学编程 也是一样
    • 越熟练 就会越自信
    • 越自信 也就会越熟练

总结

  • 我们了解了 try 的完全体
    • try
      • 尝试运行
    • except
      • 发现异常时运行的代码块
    • else
      • 没有发现异常时运行的代码块
    • finally
      • 无论是否发现异常最终都要运行的代码块

图片描述

  • 发现导入部分
    • 可以再分为两个子模块
    • 一个输入 a
    • 一个输入 b
  • 可以再拆分么?🤔
  • 我们下次再说!👋
  • 蓝桥->https://www.lanqiao.cn/courses/3584
  • github->https://github.com/overmind1980/oeasy-python-tutorial
  • gitee->https://gitee.com/overmind1980/oeasypython

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/477333.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

新写了的 AOP 日志切面,方便以后直接使用。

前言 最近项目进入联调阶段,服务层的接口需要和协议层进行交互,协议层需要将入参[json字符串]组装成服务层所需的json字符串,组装的过程中很容易出错。入参出错导致接口调试失败问题在联调中出现很多次,因此就想写一个请求日志切…

AI 时代,知识工作者的生存指南

最近,大家可能已经见识过 AI 的威力了吧,以 ChatGPT 为代表的 人工智能(AI)展现出接近人一样的回答水准。 来自 Craft AI Assitant AI 就在那里,是房间里的大象,大家不能总装做对自己没有影响。要知道&…

Python使用CV2库捕获、播放和保存摄像头视频

Python使用CV2库捕获、播放和保存摄像头视频 特别提示:CV2指的是OpenCV2(Open Source Computer Vision Library),安装的时候是 opencv_python,但在导入的时候采用 import cv2。 若想使用cv2库必须先安装,P…

2023年最新5A景区有多少个?Python可视化告诉你

2023年最新5A景区有多少个?Python可视化告诉你 五一小长假来了,很多人想抓住小长假的机会去旅游。 5A景区是大多数人的首选,全国最新有多少个5A景区呢,应该还有很多人不知道。本文用Python进行可视化,告诉你答案。 …

【五一创作】【Mycat】Mycat2 Bugs 及修改建议(V1.22_2022-10-13)

Bug 1 : wrapper.conf 数字类型参数配置有误,多了末尾的单位 M https://wrapper.tanukisoftware.com/doc/english/prop-java-initmemory.html wrapper.log 产生警告: WARN | wrapper | 2023/04/20 22:42:00 | Encountered an invalid numerical val…

【Git 入门教程】第八节、Git流程管理

Git是一个非常流行的分布式版本控制系统,它提供了许多强大的功能来帮助开发者管理和协调代码库。在团队协作中,如何使用Git来管理开发流程是非常重要的。本文将介绍一些Git流程管理的最佳实践,包括分支策略、代码审核等。 一、分支策略 在团…

【实战】jenkins api 接口

jenkins api 接口实战 一、Jenkins Api简介二、Jenkins Api 环境准备1、获取所有job接口2、获取所有job名字接口3、获取所有job名字和url接口 三、使用curl调用 获取所有构建队列四、使用curl调用 获取Job信息五、使用curl调用操作Job1、操作Job需要验证crumba、使用token发起接…

时序预测 | MATLAB实现BO-CNN-BiLSTM贝叶斯优化卷积双向长短期记忆网络时间序列预测

时序预测 | MATLAB实现BO-CNN-BiLSTM贝叶斯优化卷积双向长短期记忆网络时间序列预测 目录 时序预测 | MATLAB实现BO-CNN-BiLSTM贝叶斯优化卷积双向长短期记忆网络时间序列预测效果一览基本介绍模型搭建程序设计参考资料 效果一览 基本介绍 基于贝叶斯优化卷积双向长短期记忆网络…

GPT-3.5 也能直接联网了

ChatGPT 常令人诟病的一个问题,就是它的模型训练数据,迄今为止用的还是 2021 年的老数据。 对于当下这个信息大爆炸时代,相隔两小时,消息都有可能滞后,更别说相隔两年了。 目前正式开放了 Web Browsing 这款插件。 …

eLife:情绪学习对人脑记忆整合的回溯性促进机制

所谓“一朝被蛇咬,十年怕井绳”,带有强烈情绪色彩的事件不仅令人记忆深刻,还会影响与之相关的其他事件。我们的日常生活中充满了无数平凡琐碎的小事,这些事情并不会给我们留下深刻印象。但是,当一件微不足道的小事事后…

计算机网络中常见的数据传输方式(电路交换,报文交换,分组交换)

前言:大家好,我是小威,24届毕业生,在一家满意的公司实习。本篇文章将详细介绍计算机网络中常见的数据传输方式,如电路交换,报文交换,分组交换。 如果文章有什么需要改进的地方还请大佬不吝赐教&…

Spring DI简介及依赖注入方式和依赖注入类型

目录 一、什么是依赖注入 二、依赖注入方式 1. Setter注入 2. 构造方法注入 3. 自动注入 三、依赖注入类型 1. 注入bean类型 2. 注入基本数据类型 3. 注入List集合 4. 注入Set集合 5. 注入Map集合 6. 注入Properties对象 往期专栏&文章相关导读 1. Maven系…

使用Dino+SAM+Stable diffusion 自动进行图片的修改

SAM 是Mata发布的“Segment Anything Model”可以准确识别和提取图像中的对象。 它可以分割任何的图片,但是如果需要分割特定的物体,则需要需要点、框的特定提示才能准确分割图像。 所以本文将介绍一种称为 Grounding Dino 的技术来自动生成 SAM 进行分割…

【微机原理】计算机中数的表示及运算

目录 一、数的类型 二.数值的相互转换 三.机器数的表示 四.机器数的运算--补码加减法 五.运算结果溢出的判断。 六.数据的编码 一、数的类型 1.十进制(Decimal) 基数为10,用0、1、2、3、4、5、6、7、8、9十个数码表示数值,采用逢1…

思考外语学习的底层逻辑(以英语、法语为例)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言一、英语1.学习历程2.英语学习的心得3.理论检验(持续更新) 二、法语1.学习历程2.读入数据 总结 前言 提示:这里谈谈自己为什么要…

IDEA中使用Git提交代码提示:您即将把CRLF行分隔符提交到Gt仓库。 建议将core.autocrlf Git特性设置为trUe,以免发生行分隔符问题。

IDEA中使用Git提交代码提示:您即将把CRLF行分隔符提交到Gt仓库。 建议将core.autocrlf Git特性设置为trUe,以免发生行分隔符问题。 问题背景: 在IDEA中,使用Git提交代码到远程仓库时,结果弹出一个警告窗口 问题原因: …

java紫砂壶交易购物系统 mysql

网络紫砂壶可充通过色彩、图片、说明、设置动画加强了产品了宣传,大大达到了陶瓷业的“色型”要求。实现产品管理方便,起到立竿见影的效果,不用因为更改菜色而重新印刷。只要在后台鼠标轻轻一点,全线马上更新。采用B/S模式&#x…

Shell快速入门笔记

文章目录 Shell 快速入门笔记1、Shell概述2、Shell初体验4、注释5、变量6、数据类型6.1 字符串6.2 数组 7、参数传递8、运算符9、常用命令9.1 echo命令9.2 printf命令9.3 test命令 10、流程控制10.1 条件判断10.2 循环 11、函数12、输入/输出重定向12.0 前置知识12.1 输出重定向…

实验六~Web事件处理与过滤器

1. 创建一个名为exp06的Web项目,编写、部署、测试一个ServletContext事件监听器。 BookBean代码 package org.example.beans;import java.io.Serializable;/*** Created with IntelliJ IDEA.* Description:* User: Li_yizYa* Date: 2023—04—29* Time: 18:39*/ Su…

DDD系列:二、应用架构设计演变

作用: ​ 通过规定一个固定的架构设计,可以让团队内有一个统一的开发规范,降低沟通成本,提升效率和代码质量。 目标: ​ 在做架构设计时,一个好的架构应该需要实现以下几个目标: 独立于UI:前…