[oeasy]python065python报错怎么办_try_试着来_except_发现异常

简介: 本文介绍了Python中处理异常的基本方法,重点讲解了`try`和`except`的用法。通过一个计算苹果重量的小程序示例,展示了如何捕获用户输入错误并进行处理。主要内容包括:1. **回顾上次内容**:简要回顾了Shell环境、Python3游乐场和Vim编辑器的使用。2. **编写程序**:编写了一个简单的程序来计算苹果的总重量,但发现由于输入类型问题导致结果错误。3. **调试与修正**:通过调试发现输入函数返回的是字符串类型,需要将其转换为整数类型才能正确计算。

python报错怎么办_try_试着来_except_发现异常

回忆上次内容

  • 上次回顾了
  • shell环境
  • python3游乐场
  • vim编辑器
  • 以及他们之间的切换

  • 准备 编辑个 好玩的程序

编辑文件

  • 每个 苹果 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

  • 怎么办 呢?

问问ai

  • 直接 把报错信息
  • 复制出来

  • 告诉ai

ai结果

  • 新关键字 try

试着来

  • try
  • 试着来
  • try后面跟 冒号
  • 就像 之前的 for和if
  • <font color="red">注意!!!</font>
  • 冒号
  • 英文半角
  • except 后面也是

try:

   # 接收用户输入苹果数量

   a = input("How many apples do you have:")

   # 将输入转换为整数并乘以 2 得到重量

   weight = int(a) * 2

   # 打印结果

   print("You have ", weight, "kg apples.")

except ValueError:

   print("Please enter a valid integer.")

  • 冒号后面有缩进
  • 缩进的是
  • 需要try的 内容
  • 缩进 4字符
  • 怎样
  • 快速 缩进 来着?

TAB 空格数量

  • 缩进距离 不多不少
  • 4字符刚好

  • 使用 键盘中的Tab
  • 进行缩进
  • vim 会把 \t
  • 转化为4个空格

  • 就像 for循环 冒号后面
  • 需要缩进 一样
  • try 也需要 缩进
  • 为什么要使用try

try的必要性

  • 使用python就像科学小实验
  • 你不知道会发生什么异常

  • 有了try就可以试着做
  • 并且 能够处理各种情况

try

  • 输出结果

  • 我想 把错误下来
  • 不报错🤪
  • 可以么?

不报错

  • <font style="color:red;font-size:48px;">这不行!!!😡</font>
  • 异常错误 不处理不行
  • 要明确地报错
  • 要明确地处理
  • 知道哪里错了
  • 才好修改

  • 如果 假装 没犯错
  • 就会 失去处理线索
  • 会犯 更大的错误
  • 错误
  • 到时候 就算想改
  • 也不知道 怎么改了
  • 绝对让人 彻底崩溃

对应禅语

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!
  • 无语问苍天😭!
  • pass、try、except也是关键字吗?

如何查看关键字

新关键字

help("keywords")

  • 新关键字增加了

  • 去总结

总结

  • 这次学习了
  • try
  • except
  • try着  尝试着 运行
  • 一旦发现了 错误
  • 就 终止 try中的执行
  • 直接跳转到
  • except块

  • 注意要点
  1. 半角冒号
  2. 缩进
  3. 错误信息输出
  • 有错 就报
  • 不要 忽略、隐瞒
  • 否则 找不到 出错位置
  • 究竟 应该如何理解
  • try...except...呢?🤔
相关文章
|
10天前
|
异构计算 Python
ERROR: pip’s dependency resolver does not currently take into 报错-Python项目依赖冲突的解决方案-优雅草优雅草卓伊凡
ERROR: pip’s dependency resolver does not currently take into 报错-Python项目依赖冲突的解决方案-优雅草优雅草卓伊凡
120 1
|
10天前
|
人工智能 Shell Python
ERROR: pip’s dependency resolver does not currently take into 报错-Python项目依赖冲突的解决方案-优雅草优雅草卓伊凡
ERROR: pip’s dependency resolver does not currently take into 报错-Python项目依赖冲突的解决方案-优雅草优雅草卓伊凡
87 0
|
6月前
|
人工智能 Python
[oeasy]python089_列表_删除列表项_remove_列表长度_len
本文介绍了Python列表(list)的操作方法,重点讲解了`remove`方法的使用。通过实例演示如何删除列表中的元素,探讨了`ValueError`异常产生的原因,并分析了时间复杂度O(n)的概念。同时提及了`clear`方法清空列表的功能及`len`函数获取列表长度的用法。最后以购物清单为例,展示列表的实际应用场景,并预告快速生成列表的方法将在后续内容中介绍。
197 62
|
3月前
|
数据采集 机器学习/深度学习 边缘计算
Python爬虫动态IP代理报错全解析:从问题定位到实战优化
本文详解爬虫代理设置常见报错场景及解决方案,涵盖IP失效、403封禁、性能瓶颈等问题,提供动态IP代理的12种核心处理方案及完整代码实现,助力提升爬虫系统稳定性。
218 0
|
5月前
|
人工智能 C# Python
处理python异常
本文介绍了Python中的异常处理机制,并实现了一个简单的异常装饰器。通过`try/except`语句捕获异常,结合`finally`子句完成清理工作。为进一步优化代码结构,文章提出了使用装饰器处理异常的方法,避免函数中大量冗长的异常处理语句。通过类封装异常装饰器,多个函数可共享异常处理逻辑,提升代码简洁性和可维护性。总结强调了装饰器在异常处理中的优势,使代码更加优雅高效。
128 27
|
5月前
|
存储 索引 Python
[oeasy]python093_find方法_指数为负数_index_实际效果
本文介绍了Python中`find`方法与索引(index)的使用,包括负数索引的实际效果。回顾了`eval`函数的应用,并强调类名如`str`、`int`、`list`不可用作变量名以避免覆盖。通过示例解析了负数索引在字符串和列表中的作用,以及`index`方法的三个参数(value、start、stop)的用法。同时对比了`index`和`find`方法的区别:`index`找不到子串时抛出`ValueError`,而`find`返回-1。最后总结了正负索引的使用场景及两者的特性,提供了相关学习资源链接。
365 8
|
6月前
|
人工智能 索引 Python
[oeasy]python091_列表_索引_index_中括号_索引函数
本文介绍了Python中列表与字符串的索引及index函数用法。通过range生成列表,使用索引[]访问和修改列表元素,index函数查找元素位置。字符串支持索引访问但不可直接修改。还探讨了16进制数在Python中的表示方法,以及日期、月份等特殊字符的Unicode范围。最后总结了列表与字符串操作的区别,并预告后续内容,提供蓝桥云课、GitHub和Gitee链接供进一步学习。
148 20
|
6月前
|
Python 容器
[oeasy]python090_列表_构造_范围_range_start_end_step_步长
本文介绍了Python中列表的生成方法,重点讲解了`range()`函数的使用。通过`range(start, stop, step)`可生成一系列整数,支持正负步长,但不支持小数参数。文章从基础的列表追加、直接赋值到复杂的应用场景(如生成等宽字体的月份列表),结合实例演示了`range()`的灵活性与实用性。最后总结了`range()`的关键特性:前闭后开、支持负数步长,并提供了进一步学习的资源链接。
169 13
|
6月前
|
索引 Python
[oeasy]python092_eval_衡量_转化为列表
本文探讨了 Python 中 `eval` 函数的用法及其与字符串和列表之间的转换关系。通过实例分析,展示了如何使用 `eval` 将字符串转化为对应的数据类型,例如将表示列表的字符串转回列表。同时,文章深入讲解了 `eval` 的工作机制,包括根据本地和全局变量对字符串进行计算的能力。此外,还提醒了命名变量时需避免覆盖内置类名(如 `str`、`int`、`list`)的重要性,以免影响程序正常运行。最后,简要提及字符串和列表索引中负数的应用,并为读者提供了进一步学习的资源链接。
125 2
|
6月前
|
Python
如何处理python的常见异常问题
在Python语言中,python异常处理机制主要依赖try、except、else、finally和raise五个关键字。本篇文章将为大家详细讲解一下如何处理python的常见异常问题。

推荐镜像

更多