show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上次回顾了
- shell环境
- python3游乐场
- vim编辑器
- 以及他们之间的切换
- 准备去编辑一个有趣的程序
- 继续之前程序
- 试图将苹果数量转化为整数(int)类型
a = input("How many apples do you have:")
weight = a * 2
print("You have ",weight, "kg apples.")
- 尝试运行
- 尝试运行
- 注意其中的数字是运行时输入的!
- 3个苹果,理论上是6公斤
- 现在怎么就33公斤了呢?🤔
- :!pdb3 %
- 输入函数input的返回值类型是str
- 导致结果出错
- 尝试将结果转化为int
a = input("How many apples do you have:")
weight = int(a) * 2
print("You have ",weight, "kg apples.")
- 修改之后 问题解决
- 但是如果输入的数值无法转化为数字呢?
- 如果输入的苹果数量是
- 字符串"abc"
- int("abc")会发生什么??😱
- 如果输入的苹果数量是
- 输入了abc
- int("abc")报错
- 不想让用户看到这么多报错信息
- 怎么办呢?
- 注意!!!
- 冒号
- 是英文半角的
- 紧跟着 前面的
- try
- except
- 冒号
-
冒号后面有缩进
- 待尝试的内容需要缩进 4 个字符
- total = int(a) + int(b)
-
所有需要try的内容都要
缩进
- 使用键盘中的Tab进行缩进
- 就像for循环冒号后面
- 需要缩进一样
- 缩进距离不多不少
- 4个刚好
try:
a = input("How many apples do you have:")
weight = int(a) * 2
print("You have ",weight, "kg apples.")
except:
print("\33[41merror\33[0m", a, "is not a integer!")
- 输出结果
- 我把错误瞒下来
- 不报错可以么?
- 这不行!!!😡
- 异常错误不处理不行
- 要明确得处理
- 要明确的报错
- 知道哪里错了
- 才好修改
- 如果假装没犯错
- 就会完全没有处理线索
- 就会犯更大的错误
- 程序大了绝对让人彻底崩溃
- 到时候就想改也不知道怎么改了
- 错误不应被悄悄传递
- 除非你确定需要这样做
- 精准地捕获异常
- 不写 except:pass 风格的代码
- 那什么是 except:pass 风格的代码呢?
try:
a = input("How many apples do you have:")
weight = int(a) * 2
print("You have ",weight, "kg apples.")
except:
pass
知错不报错
- 虽然 except接收到了错误
- 但是 轻轻飘过pass
- 上面这种是最要命的
- 让人没法追踪trace的痕迹
- 无法调试debug!
- 无语问苍天😭!
- 这次学习了
- try
- except
- 尝试try着 运行
- 尝试过程中 一旦发现了错误
- 就 终止 try中的执行
- 直接跳转到 except块
- 尝试过程中 一旦发现了错误
- 注意要点
- 半角冒号
- 缩进
- 错误信息输出
- 有错就处理
- 不要忽略、隐瞒
- 否则找不到出错位置
- 究竟应该如何理解try...except...呢?🤔
- 下次再说!👋