show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上次回顾了
- shell环境
- python3游乐场
- vim编辑器
- 以及他们之间的切换
- 准备 编辑个 好玩的程序
- 继续之前 apple.py
- 根据 苹果数量
- 算出 苹果份量
- 一个 苹果 2公斤
a = input("How many apples do you have:")
weight = a * 2
print("You have ",weight, "kg apples.")
- 尝试运行
- 尝试运行
- 注意其中的数字是运行时输入的!
- 3个苹果
- 理论上是6公斤
- 现在 怎么就
33公斤
了呢?🤔
- :!pdb3 %
- 输入函数input的返回值类型
- 是字符串str
- 字符串乘法 用的是 拼接法
- 导致结果出错
- 尝试将 输入的 苹果数量
- 从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
- 试着来
- try后面接 冒号
-
注意!!!
- 冒号
- 是英文半角的
-
except
- 后面也跟 冒号
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!")
-
冒号后面有缩进
- 待尝试的内容
- 需要缩进 4字符
-
所有需要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!")
- 输出结果
-
error的红色底 来自于
- \33[41merror\33[0m
-
\33[41merror\33[0m
- \33[41m 设置 标准输出流 为 红色底纹
- error 为应用 红色底纹的文本
- \33[0m 将标准输出流 复位回 黑底白字
- 后面字体颜色不受影响
-
错误用红色标记
- 好显眼
-
我想 把错误
瞒
下来- 不报错可以么?
- 这不行!!!😡
- 异常错误 不处理不行
- 要明确地处理
- 要明确地报错
- 知道哪里错了
- 才好修改
- 如果 假装 没犯错
- 就会 失去处理线索
- 会犯
更大的
错误
- 程序大了
- 到时候就想改
- 也不知道怎么改了
- 绝对让人彻底崩溃
import this
- 错误 不应被 悄悄传递
- 除非 你确定 需要这样做
- 精准地 捕获异常
- 不写 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...呢?🤔
- 下次再说!👋