《云计算全栈》-python篇:简化除法判断

5 案例4:简化除法判断
5.1 问题

创建mydiv.py脚本,要求如下:

提示用户输入一个数字作为除数
如果用户按下Ctrl+C或Ctrl+D则退出程序
如果用户输入非数字字符,提示用户应该输入数字
如果用户输入0,提示用户0不能作为除数

5.2 方案

首先,执行try子句(在关键字try和关键字except之间的语句),输入数字,让这个数字被100整除,

1.如果没有异常发生,忽略except子句,try子句执行后,执行else子句和finally子句,最后执行 try 语句之后的代码结束整个程序。

2.如果在执行try子句的过程中发生了异常,异常的类型和 except 之后的名称相符,那么对应的except子句将被执行。然后执行finally子句,最后执行 try 语句之后的代码结束整个程序。

需要注意的是:允许用户中断这个程序(使用Ctrl+C或Ctrl+D方法)。用户中断的信息会引发KeyboardInterrupt 和EOFError 这两种异常。

一个 try 语句可能包含多个except子句,分别来处理不同的特定的异常。最多只有一个分支会被执行。

处理程序将只针对对应的try子句中的异常进行处理,而不是其他的 try 的处理程序中的异常。

try except 语句只有一个可选的else子句,使用这个子句,必须放在所有的except子句之后。这个子句将在try子句没有发生任何异常的时候执行。

finally子句是无论异常是否发生,是否捕捉都会执行的一段代码,使用finally可以保证文件总是能正常的关闭
5.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:编写脚本

    [root@localhost day05]# vim mydiv.py
    #!/usr/bin/env python3
    try:
        num = int(input("number: "))
        result = 100 / num
    except ValueError:
        print('请输入数字')
    except ZeroDivisionError:
        print('不允许使用0')
    except (KeyboardInterrupt, EOFError):
        print('\nBye-bye')
    else:
        print(result)  # 不发生异常才执行的语句
    finally:
        print('Done')  # 不管异常是否发生都要执行的语句
    print('end of program')  
    #不是必须把所有的语句写全,常用的有try-except和try-finally组合

步骤二:测试脚本执行

[root@localhost day05]# python3 mydiv.py 
number: 0
不允许使用0
Done
end of program
[root@localhost day05]# python3 mydiv.py 
number: nighao
请输入数字
Done
end of program
[root@localhost day05]# python3 mydiv.py 
number: 3
33.333333333333336
Done
end of program
[root@localhost day05]# python3 mydiv.py 
number: 55^C
Bye-bye
Done
end of program
[root@localhost day05]# python3 mydiv.py 
number: 
Bye-bye
Done
end of program
发布了275 篇原创文章 · 获赞 46 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/xie_qi_chao/article/details/104726121