Python编程常见出错信息及原因分析(1)

1.被0除错误

演示代码:

>>> 2 / 0 Traceback (most recent call last): File "<pyshell#0>", line 1, in <module> 2 / 0 ZeroDivisionError: division by zero

错误原因分析与解决方案:

0不能作为除数,这一点必须要避免。

2.类型转换错误

演示代码:

>>> x = int(input('请输入一个整数:'))

请输入一个整数:abc Traceback (most recent call last): File "<pyshell#1>", line 1, in <module> x = int(input('请输入一个整数:')) ValueError: invalid literal for int() with base 10: 'abc'

错误原因分析与解决方案:

在接收用户键盘输入时,input()函数一律作为字符串返回,在进行类型转换(包括把用户输入转换为整数、实数、复数等类型)时,首先应做类型检查或辅以异常处理结构。例如,下面的代码使用if/else语句进行类型检查:

>>> x = input('请输入一个整数:') 请输入一个整数:abc >>> if x.isdigit(): print(int(x)) else: print('你输入的不是整数。')

你输入的不是整数。

下面的代码使用异常处理结构避免了错误输入导致的程序崩溃:

>>> try: print(int(input('请输入一个整数:'))) except: print('你输入的不是整数。')

请输入一个整数:abc 你输入的不是整数。

3.拼写错误

演示代码:

>>> print(value) Traceback (most recent call last): File "<pyshell#14>", line 1, in <module> print(value) NameError: name 'value' is not defined

错误原因分析与解决方案:

这种错误一般是因为拼写错误引起的,异常信息显示名字value没有定义,此时应仔细检查变量大小写。当然,也可能是不小心使用了还没有定义的变量名导致。

4.文件不存在错误

演示代码:

>>> with open('1234.txt') as fp: print(fp.read())

Traceback (most recent call last): File "<pyshell#17>", line 1, in <module> with open('1234.txt') as fp: FileNotFoundError: [Errno 2] No such file or directory: '1234.txt'

错误原因分析与解决方案:

异常信息显示在当前文件夹中不存在文件1234.txt。错误原因可能是文件名输入错误,或该文件不在当前文件夹,需要使用相对路径或绝对路径。

5.权限不足错误

演示代码:

>>> import os >>> os.chmod('test.txt', 0o000) >>> os.remove('test.txt') Traceback (most recent call last): File "<pyshell#23>", line 1, in <module> os.remove('test.txt') PermissionError: [WinError 5] 拒绝访问。: 'test.txt'

错误原因分析与解决方案:

这种情况是因为权限不足引起的,文件test.txt当前权限被设置为“不可删除、不可修改、不能删除”,所以执行删除操作时抛出异常。如果确实要删除文件,可以首先设置文件的访问控制权限,然后再删除:

>>> os.chmod('test.txt', 0o777) >>> os.remove('test.txt')

原文发布于微信公众号 - Python小屋(Python_xiaowu)

原文发表时间:2017-09-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏阿杜的世界

什么是classloader和双亲委派

8820
来自专栏大闲人柴毛毛

Java并发编程的艺术(二)——重排序

当我们写一个单线程程序时,总以为计算机会一行行地运行代码,然而事实并非如此。 什么是重排序? 重排序指的是编译器、处理器在不改变程序执行结果的前提下,重新排列指...

390100
来自专栏七夜安全博客

无线安全专题_破解篇03--打造个人字典

12840
来自专栏Janti

JVM活学活用——类加载机制

类的实例化过程 ---- 有父类的情况 1. 加载父类静态     1.1 为静态属性分配存储空间并赋初始值     1.2 执行静态初始化块和静态初始化...

41280
来自专栏C语言及其他语言

每日一题[C语言程序设计教程(第三版)课后习题1.5]

请参照本章例题,编写一个C程序,输出以下信息: ************************** Hello World! ****************...

27330
来自专栏技巅

GlusterFS之内存池(mem-pool)使用实例分析

20060
来自专栏黑白安全

C++如何调用class类中方法实现多线程编程

众所周知在使用C++创建多线程执行时只能传递一个方法到thread模块中去创建线程执行。但是有时候我们往往需要使用多线程去执行某个对象中的方法,而对象中的方法却...

12920
来自专栏芋道源码1024

Java初中级面试题(2)

61070
来自专栏决胜机器学习

PHP实用功能——modern PHP读书笔记(一)

PHP实用功能——modern PHP读书笔记 (原创内容,转载请注明来源,谢谢) 一、命名空间 1、命名空间按照虚拟的层次结构组织PHP代码,类似操作系统的目...

45750
来自专栏前端杂货铺

Angular源码分析之$compile

@(Angular) $compile,在Angular中即“编译”服务,它涉及到Angular应用的“编译”和“链接”两个阶段,根据从DOM树遍历Angula...

36450

扫码关注云+社区

领取腾讯云代金券