python入门基础6

异常:

在程序执行过程中发生的任何错误都是异常。每个异常显示一些相关的错误信息,比如你在 Python3 中使用 Python2 独有的语法就会发生 SyntaxError

不小心在行首多打了一个空格就会产生 IndentationError

当访问一个未定义的变量则会发生 NameError

最后一行包含了错误的详细信息,其余行显示它是如何发生(或什么引起该异常)的详细信息

TypeError 也是一种经常出现的异常。当操作或函数应用于不适当类型的对象时引发,一个常见的例子是对整数和字符串做加法

处理异常:

使用 try...except 块来处理任意异常

try:

    statements to be inside try clause

    statement2

    statement3

    ...

except ExceptionName:

    statements to evaluated in case of ExceptionName happens

首先,执行 try 子句 (在 try 和 except 关键字之间的部分)。

如果没有异常发生,except 子句 在 try 语句执行完毕后就被忽略了。

如果在 try 子句执行过程中发生了异常,那么该子句其余的部分就会被忽略。

如果异常匹配于 except 关键字后面指定的异常类型,就执行对应的 except 子句。然后继续执行 try 语句之后的代码。

如果发生了一个异常,在 except 子句中没有与之匹配的分支,它就会传递到上一级 try 语句中。

如果最终仍找不到对应的处理语句,它就成为一个 未处理异常,终止程序运行,显示提示信息。

使用 raise 语句抛出一个异常。

python入门基础6

python入门基础6

定义清理行为:

try 语句还有另一个可选的 finally 子句,目的在于定义在任何情况下都一定要执行的功能

python入门基础6

不管有没有发生异常,finally 子句 在程序离开 try后都一定会被执行。当 try 语句中发生了未被 except捕获的异常(或者它发生在 except 或 else 子句中),在 finally 子句执行完后它会被重新抛出。

在真实场景的应用程序中,finally 子句用于释放外部资源(文件或网络连接之类的),无论它们的使用过程中是否出错。

实现一个程序,将分钟转为小时和分钟:

注意:代码中不要使用 input() 函数,否则挑战测试会卡住,出现 Timeout 的报错。

在 MinutesToHours.py 文件中实现一个函数 Hours(),将用户输入的 分钟数 转化为 小时数和分钟数,并要求小时数尽量大。将结果以 XX H, XX M 的形式打印出来。

要求:

  1. 用户能够通过命令行参数输入分钟数,不要使用 input,命令行参数可以使用 sys.argv 来提取。例如程序执行为 python3 MinutesToHours.py 80,传入的参数 80 就是分钟数,程序需要打印出相应的小时数和分钟数,输出为 1 H, 20 M
  2. 如果用户输入的是一个负值,程序需要 raise 来抛出 ValueError 异常。
  3. Hours() 函数调用的时候,需要使用 try...except 处理异常。获取异常后,在屏幕上打印出 Parameter Error 提示用户输入的值有误。
  • sys.argv 获取命令行参数,注意获取的参数为字符串,可以使用 int() 将字符串转为整数,此处也可能会出现异常情况,例如输入为 "abcd" 是无法转为整数的
  • raise 语句
  • try...except 语句

python入门基础6

python入门基础6