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

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

try的完全体  

回忆上次内容  


  • 上次细化了主控程序(main.py)
  • 导入(get_fruits.py)
  • 处理(process.py)
  • 输出(output.py)


  • 使用了 try 结构
  • try
  • except
  • 发现异常就报错


  • 输入部分的错误
  • 应该在 输入部分来报


  • 具体怎么报呢?🤔


完善输入  


  • 输入的时候
  • 应该包括
  • 对于输入内容的验证


  • 于是 再修改代码




添加图片注释,不超过 140 字(可选)



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



运行结果  


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




添加图片注释,不超过 140 字(可选)



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




添加图片注释,不超过 140 字(可选)


继续修改  


添加图片注释,不超过 140 字(可选)



  • 测试通过



添加图片注释,不超过 140 字(可选)



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



查询帮助  


添加图片注释,不超过 140 字(可选)



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




添加图片注释,不超过 140 字(可选)


else  


  • else的意思是否则
  • 就是没有发现异常时执行的


  • else 是一个可选(optional)子句
  • 如果try中发现了指定异常
  • 就从try中发现错误的位置跳出来
  • 只执行except部分
  • 不执行else部分


  • 如果try中没有发现指定的异常
  • 在执行完try中的内容之后
  • 不执行 except 部分
  • 只运行 else 部分





添加图片注释,不超过 140 字(可选)



  • 每个输入部分 都包括  
  • 提示和输入
  • input(“xxx”)


  • 尝试转化为整型数字
  • try
  • int


  • 异常处理
  • except


  • 无异常输出
  • else



  • try 语句当中  
  • 除了 else 之外
  • 还有 finally



综合一下  


  • 这就是 try 的完全体



添加图片注释,不超过 140 字(可选)



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



finally  


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




添加图片注释,不超过 140 字(可选)



  • try 之后
  • 要么 except
  • 要么 else
  • 无论是except 还是 else
  • 最后 总要执行finally



  • 如果执行过程中
  • 还有任何的异常
  • 但是这个异常没有被处理
  • 那么就把这个异常先存着
  • 等待finally执行之后
  • 再抛出这个异常


  • 如果遇到return break continue之类强制跳转语句
  • 这个异常就被忽略了



  • 这如何理解?
  • 新建一个test.py进行测试


理解finally  


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




添加图片注释,不超过 140 字(可选)



  • except中
  • 没有ValueError的处理办法
  • ValueError没有被处理
  • 于是ValueError就存着


  • 由于出现了异常
  • 已经进入了except
  • 无法进入else


  • 最后进入finally执行
  • 输出了At Last


  • 执行外finally语句块
  • 才把这个ValueError最后抛出来




添加图片注释,不超过 140 字(可选)



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


整体结构  


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




添加图片注释,不超过 140 字(可选)



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




仁慈的独裁者  


  • 彻底的仁慈
  • 意味着 没有主见和行动力下降


  • 彻底的独裁
  • 则会 失去广泛的帮助




添加图片注释,不超过 140 字(可选)



  • 仁慈和独裁像
  • 是矛盾的两面
  • 但是Guido却很好地平衡了两者


  • 除了Guido之外
  • 很多开源项目的老大
  • 也有类似的特性





添加图片注释,不超过 140 字(可选)



  • Guido是如何成长的呢?


扩展视野  


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




添加图片注释,不超过 140 字(可选)



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



互联网  


  • Guido做了一个浏览器grail



添加图片注释,不超过 140 字(可选)


网络集聚  


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





添加图片注释,不超过 140 字(可选)



  • 有人 就有 应用
  • 有应用 就更有 人
  • 于是会形成 正反馈
  • 有了社区 就会有更多的人 加入社区


  • 其实学编程 也是一样
  • 越熟练 就会越自信
  • 越自信 也就会越熟练



总结  


  • 我们了解了 try 的完全体
  • try
  • 尝试运行


  • except
  • 发现异常时运行的代码块


  • else
  • 没有发现异常时运行的代码块


  • finally
  • 无论是否发现异常最终都要运行的代码块





添加图片注释,不超过 140 字(可选)



  • 发现导入部分
  • 可以再分为两个子模块
  • 一个输入 a
  • 一个输入 b


  • 可以再拆分么?🤔
  • 我们下次再说!👋
  • 蓝桥->https://www.lanqiao.cn/courses/3584
  • github->https://github.com/overmind1980/oeasy-python-tutorial
  • gitee->https://gitee.com/overmind1980/oeasypython


目录
相关文章
|
3月前
|
Unix 编译器 Shell
[oeasy]python0033_先有操作系统还是先有编程语言_c语言是怎么来的
本文回顾了计算机语言与操作系统的起源,探讨了早期 Unix 操作系统及其与 C 语言的相互促进发展。Unix 最初用汇编语言编写,运行在 PDP-7 上,后来 Thompson 和 Ritchie 开发了 C 语言及编译器,使 Unix 重写并成功编译。1974 年 Ritchie 发表论文,Unix 开始被学术界关注,并逐渐普及。伯克利分校也在此过程中发挥了重要作用,推动了 Unix 和 C 语言的广泛传播。
64 9
[oeasy]python0033_先有操作系统还是先有编程语言_c语言是怎么来的
|
4月前
|
Python
|
19天前
|
人工智能 Shell 开发工具
[oeasy]python0041_输出ASCII码表_英文字符编码_键盘字符_ISO_646
本文介绍了ASCII码表的生成与使用,包括英文字符、数字和符号的编码。通过Python代码遍历0到127的ASCII值,解决了找不到竖线符号的问题,并解释了ASCII码的固定映射关系及其重要性。文章还介绍了ASCII码的历史背景,以及它如何成为国际标准ISO 646。最后,通过安装`ascii`程序展示了完整的ASCII码表。
13 1
|
1月前
|
人工智能 Python
[oeasy]python039_for循环_循环遍历_循环变量
本文回顾了上一次的内容,介绍了小写和大写字母的序号范围,并通过 `range` 函数生成了 `for` 循环。重点讲解了 `range(start, stop)` 的使用方法,解释了为什么不会输出 `stop` 值,并通过示例展示了如何遍历小写和大写字母的序号。最后总结了 `range` 函数的结构和 `for` 循环的使用技巧。
31 4
|
2月前
|
存储 Python
[oeasy]python038_ range函数_大小写字母的起止范围_start_stop
本文介绍了Python中`range`函数的使用方法及其在生成大小写字母序号范围时的应用。通过示例展示了如何利用`range`和`for`循环输出指定范围内的数字,重点讲解了小写和大写字母对应的ASCII码值范围,并解释了`range`函数的参数(start, stop)以及为何不包括stop值的原因。最后,文章留下了关于为何`range`不包含stop值的问题,留待下一次讨论。
25 1
|
23天前
|
人工智能 开发工具 Python
[oeasy]python040_缩进几个字符好_输出所有键盘字符_循环遍历_indent
本文探讨了Python代码中的缩进问题。通过研究`range`函数和`for`循环,发现缩进对于代码块的执行至关重要。如果缩进不正确,程序会抛出`IndentationError`。文章还介绍了Python的PEP8规范,推荐使用4个空格进行缩进,并通过示例展示了如何使用Tab键实现标准缩进。最后,通过修改代码,输出了从0到122的字符及其对应的ASCII码值,但未能找到竖线符号(`|`)。文章在总结中提到,下次将继续探讨竖线符号的位置。
12 0
|
2月前
|
Python
[oeasy]python036_数据类型有什么用_type_类型_int_str_查看帮助
本文回顾了Python中`ord()`和`chr()`函数的使用方法,强调了这两个函数互为逆运算:`ord()`通过字符找到对应的序号,`chr()`则通过序号找到对应的字符。文章详细解释了函数参数类型的重要性,即`ord()`需要字符串类型参数,而`chr()`需要整数类型参数。若参数类型错误,则会引发`TypeError`。此外,还介绍了如何使用`type()`函数查询参数类型,并通过示例展示了如何正确使用`ord()`和`chr()`进行转换。最后,强调了在函数调用时正确传递参数类型的重要性。
23 3
|
2月前
|
存储 C++ Python
[oeasy]python037_ print函数参数_sep分隔符_separator
本文介绍了Python中`print`函数的`sep`参数,即分隔符。通过回顾上文内容,解释了类型与`type`的概念,并强调了参数类型的重要性。文章详细探讨了`print`函数如何使用`sep`参数来分隔输出值,默认分隔符为空格(序号32)。还讨论了如何修改分隔符为其他字符,如冒号,并解释了为何反斜杠需要使用双反斜杠表示。最后,文章追溯了`sep`名称的由来,以及相关词汇的历史背景,如盎格鲁-萨克逊人的武器和语言。
44 0
|
3月前
|
Python
[oeasy]python035_根据序号得到字符_chr函数_字符_character_
本文介绍了Python中的`ord()`和`chr()`函数。`ord()`函数通过字符找到对应的序号,而`chr()`函数则根据序号找到对应的字符。两者互为逆运算,可以相互转换。文章还探讨了单双引号在字符串中的作用,并解释了中文字符和emoji也有对应的序号。最后总结了`ord()`和`chr()`函数的特点,并提供了学习资源链接。
31 4
|
4月前
|
算法 Unix 程序员
[oeasy]python031_[趣味拓展]unix起源_Ken_Tompson_Ritchie_multics
回顾了上次内容关于调试的基本概念后,本文介绍了Unix操作系统的起源。从早期计算机任务的独占执行方式讲起,到1960年代 Dartmouth 开发出分时算法,使得一台主机能够面对多个终端,轮流使用CPU时间片。随后,贝尔实验室、通用电气和MIT合作开展Multics项目,项目成员Kenneth Thompson与Dennis Ritchie在此期间开发了一款名为《Space Travel》的游戏。然而,因金融动荡等原因,Multics项目最终被裁撤。Thompson和Ritchie后来利用实验室闲置的一台PDP-7计算机仅用三周时间就开发出了Unix操作系统的第一版,初衷是为了能够继续玩游戏。
43 3