首页 > 编程语言 >Python编程常见问题与解答

Python编程常见问题与解答

时间:2023-06-10 16:32:00浏览次数:39  
标签:文件 常见问题 Python 元素 提示 对象 使用 编程


1.问:Python代码运行速度和C语言相比,哪个更快?

答:一般来说,Python代码的运行速度比C语言的慢很多,但是如果充分运用内置函数、标准库对象和函数式编程模式的话,运行速度会提高很多,可以接近C语言。

2.问:学习Python编程,用哪个开发环境更好一些呢?

答:目前来看,Anaconda3和PyCharm用的相对来说多一些。

3.问:在哪里执行pip命令安装Python扩展库?为什么在IDLE中执行会提示语法错误呢?

答:应该在命令提示符环境执行,不是在Python开发环境中执行。并且,最好切换到Python安装目录中的scripts子目录中执行,在安装了多个Python版本时这一点非常重要。

4.问:为什么使用pip命令安装扩展库是提示“不是内部或外部命令,也不是可运行的程序或批处理文件”?

答:检查系统环境变量path是否包含Python的安装目录以及scripts子目录,如果不包含的话,添加进去,或者切换到Python安装目录的scripts子目录中执行pip命令。

5.问:使用pip安装扩展库总是提示网络超时,该怎么办呢?

答:可以下载安装包或whl文件离线安装,或者指定国内源,不使用pip默认的国外源。

6.问:使用pip安装扩展库时失败,提示需要安装VC++,该怎么办呢?

答:如果是Windows系统的话,可以使用浏览器打开https://www.lfd.uci.edu/~gohlke/pythonlibs/下载合适版本的whl文件,然后离线安装。

7.问:我在https://www.lfd.uci.edu/~gohlke/pythonlibs/下载的文件名太长了,为了打字方便就改成了很短的名字,结果不能用了,必须使用原来的文件名吗?

答:是的,不能修改文件名,必须保持原来的名字。

8.问:使用pip安装扩展库时,明明提示已经安装成功了,但是使用import导入时又提示没有安装该扩展库,为什么呢?

答:这样的情况一般是因为安装了多个Python版本。在一个版本下安装的扩展库不能在另一个版本中使用,需要分别进行安装。

9.问:map对象不支持下标吗?为什么使用下标访问其中的元素时提示“TypeError: 'map' object is not subscriptable”呢?

答:是的,map对象、enumerate对象、zip对象、filter对象、reversed对象和生成器对象这些具有惰性求值特点的对象都不支持使用整数下标访问其中的元素。可以把这类对象转换为列表、元组来一次性获取其中的元素,或者使用for循环逐个遍历其中的元素。

10.问:访问列表中元素时,提示“IndexError: list index out of range”,这是什么原因呢?

答:应该是下标指定的位置不存在,检查下标是否有效。一个长度为L的列表,有效下标范围是[-L, L-1]。

11.问:在我的代码中x是一个列表,我使用y=x.sort()语句把它排序后的结果赋值给y,然后使用y.index(3)查看3在y中的下标时,为什么会提示“AttributeError: 'NoneType' object has no attribute 'index'”呢?

答:列表的sort()方法是原地排序,没有返回值。在Python中,没有返回值的方法,都认为返回空值None,而空值是没有index()方法的。

12.问:我创建了一个集合,想在里面加入一个列表作为元素,结果提示“TypeError: unhashable type: 'list'”,这是什么意思呢?

答:在Python中,不可哈希(unhashable)和可变的意思是一样的。整数、实数、复数、字符串、元组这些是不可变的,或者说是可哈希的。而列表、字典、集合是可变的,或者说是不可哈希的。字典的“键”和集合的元素都要求必须是不可变的,也就是可哈希的。

13.问:我调用函数时提示“TypeError: f() missing 2 required positional arguments: 'a' and 'b'”,该怎么办呢?

答:调用函数时,位置参数的数量必须符合函数定义,如果函数要求接收2个位置参数,那么调用时也应传递2个位置实参。

14.问:运行代码时提示“SyntaxError: expected an indented block”,怎么解决呢?

答:Python代码对缩进的要求非常严格,相同层次的代码必须具有同样的缩进量。

15.问:运行代码时提示“AttributeError: 'list' object has no attribute 'add'”,为什么呢?

答:列表对象没有add()方法,集合才有add(),仔细检查对象的类型。

16.问:我想删除元组当中的一个元素,提示“TypeError: 'tuple' object doesn't support item deletion”,是什么意思呢?

答:在Python中,元组和字符串这样的容器类对象是不可变的,不支持其中元素的增加、修改和删除操作。

17.问:我想使用下标访问集合中的第一个元素,运行代码时提示“TypeError: 'set' object does not support indexing”,是因为集合不支持下标吗?

答:是的。Python集合里面的元素是无序的,不能使用下标访问特定位置的元素。

18.问:我想使用切片操作修改列表中的部分元素,运行代码时提示“ValueError: attempt to assign sequence of size 1 to extended slice of size 3”,该怎么办呢?

答:使用切片操作修改列表中部分元素时,如果第三个数字step的值不等于1,那么等号左侧的切片长度和等号右侧的列表长度必须一致。

19.问:已知x是一个字符,我想使用x+1得到下一个字符,为什么提示“TypeError: can only concatenate str (not "int") to str”呢?

答:Python不支持字符和整数相加,如果想得到下一个字符,可以使用表达式chr(ord(x)+1)。

20.问:运行代码时提示“NameError: name 'value' is not defined”,怎么办呢?

答:根据提示信息来看,是说变量value没定义。很可能是拼写错误,仔细检查变量是否拼写正确。

21.问:我的代码可以运行,但是结果不对,怎么办呢?

答:代码可以运行表示没有语法错误,不代表没有逻辑错误。遇到这种情况时,仔细检查代码的逻辑和问题的要求是否一致,是否把>写成>=了,或者忽略了range()函数返回的是左闭右开区间了,是不是把运算符**写成*了,是不是代码缩进有错误。

22.问:明明记事本程序文件是存在的,为什么会提示“FileNotFoundError: [WinError 2] 系统找不到指定的文件。: 'C:\\Windows\notepad.exe'”呢?

答:在这个路径中,第二个反斜线和后面的字母n恰好组成转义字符\n,应该使用两个反斜线或者使用原始字符串。

23.问:访问文件时,提示“PermissionError: [WinError 5] 拒绝访问。: 'test.txt'”,怎么办呢?

答:应该是文件具有“只读”之类的特殊属性,或者当前登录的用户账号没有权限访问该文件。

24.问:我机器上明明是有test.txt这个文件的,为什么使用内置函数open()打开时提示文件不存在呢?

答:如果文件test.txt不在当前文件夹中,在打开或读写时必须指定完整路径。

25.问:从“资源管理器”来看,我当前文件夹中明明有test.txt文件,但是使用内置函数open()打开时还是提示文件不存在,可能是哪里错了呢?

答:默认情况下,“资源管理器”会隐藏一些常见类型文件的扩展名,去掉这个隐藏,检查一下文件的名字是不是test.txt.txt。

26.问:运行代码读取文本文件内容时,提示“UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb5 in position 0: invalid start byte”,是什么错误呢?

答:如果文件中包含中文字符,应使用正确的编码格式打开,也就是明确使用内置函数open()的encoding参数指定编码格式。如果不知道文件采用什么编码格式,可以使用记事本打开之后使用“另存为”功能保存成特定的编码格式。

27.问:我已经使用“pip install docx”命令安装了扩展库docx,为什么无法运行书上的代码操作Word文件呢?

答:操作Word文件的扩展库名字叫python-docx,不是docx。另外要注意,扩展库python-docx只能操作Word 2007或更新版本的文档,不能处理Word 2003之前的文档。

28.问:使用open()函数打开文件往里写入内容时,提示“TypeError: write() argument must be str, not bytes”,是什么原因呢?

答:如果要写入文本文件的话,可以使用'w'模式;如果写入二进制文件的话,应该使用'wb'模式。

29.问:使用内置函数open()打开文件之后,只能按照顺序从前往后读取内容吗?

答:也不是,如果需要读取前面已经读取过的内容,可以使用文件对象的seek()方法修改文件指针的位置。

30.问:我用字符串方法startwith()测试一个字符串是否以另一个字符串为前缀,怎么会提示“AttributeError: 'str' object has no attribute 'startwith'”这样的错误呢?

答:字符串没有startwith()方法,应该是startswith()。同理,也没有endwith()方法,而是endswith()。

31.问:表达式{1, 2, 3}<{1, 2, 4}的值怎么会是False呢?

答:关系运算符作用于集合时,表示集合之间的包含关系。对于集合A和B,只有A是B的真子集时,A<B的值才是True。

32.问:两个列表是怎么比较大小的呢?

答:列表比较大小时,是从前往后依次比较其中的每个元素,直到得到明确的结论为止。以[1, 2, 3]和[1, 2, 4]为例,第一个元素相等,第二个元素也相等,第三个元素3<4,所以[1, 2, 3]<[1, 2, 4]。以[1, 2, 3, 4]和[1, 2, 3]为例,两个列表中前三个元素是相等的,但第一个列表中还有多余的元素,所以[1, 2, 3, 4]>[1, 2, 3]。以[4, 2, 1]和[3, 5, 1]为例,第一个元素4>3,此时可以直接得出结论[4, 2, 1]>[3, 5, 1],后面的元素不再比较。元组和字符串也使用同样的方式比较大小。

33.问:程序中有个map对象,第一次使用是正常的,但是再使用时好像里面就没有元素了,这是怎么回事呢?

答:map对象、enumerate对象、zip对象、filter对象、reversed对象和生成器对象这些具有惰性求值特点的对象,其中的元素只能使用一次,访问过的元素无法再次访问。

34.在IDLE中运行程序,提示错误“UnicodeEncodeError: 'UCS-2' codec can't encode characters in position 96-96: Non-BMP character not supported in Tk”,但是代码怎么检查都是对的,怎么办呢?

答:IDLE中有些字符无法正常输出,换个开发环境,或者在命令提示符环境中运行程序就可以了。

 

 

 

 

标签:文件,常见问题,Python,元素,提示,对象,使用,编程
From: https://blog.51cto.com/u_9653244/6454801

相关文章

  • Python 3.8与普通程序员有关的几个新特性
    ==============1、字典支持内置函数reversed()了。在Python3.7之前的版本中,是不支持内置函数reversed()的,但在Python3.8中,可以这样做了,2、加强了函数调用时关键参数形式的限制。在Python3.7之前的版本中,是允许这样用的,虽然很少有人这样做但在Python3.8中,不再允许了,3、改进了函......
  • C++的多线程编程(练习一下condition_variable)
        嗯,高考结束了,那就编写一个阅卷和查成绩的多线程吧。一个线程老师阅卷,其他三个线程查成绩。代码如下:    1#include<iostream>2#include<thread>3#include<mutex>4#include<condition_variable>5#include<chrono>6#include<futu......
  • python网络爬虫--爬取各省GDP
    一、选题背景1.随着经济全球化的日益深入发展,各国的经济发展也日益重要。在中国,省份是经济发展的基本单位,各省之间经济发展水平的差异较大。了解各省份GDP的数据情况,对于政府部门制定地区经济政策、企业拓展市场等具有重要的参考意义。2.因此,通过Python爬取各省份GPD数据,可......
  • 用 Python + turtle 模块绘制五星红旗
    用Python绘制五星红旗在这个代码示例中,我将介绍如何使用Python的turtle模块绘制五星红旗。turtle模块是一个图形库,可以轻松地在Python中实现简单的绘图功能。导入模块首先,我们需要导入turtle模块和math模块,以便能够使用数学函数来计算五角星的边长、比例尺等参数......
  • Python 九九乘法表的多种实现方式
    简介九九乘法表是初学者学习编程的必要练手题目之一,因此各种语言都有对应的实现方式,而Python也不例外。在Python中,我们可以使用多种方式来生成一个简单的九九乘法表。本文共介绍了七种Python实现九九乘法表的方法,包括:双重循环for-for、双重循环while-while、循环嵌套whi......
  • Python实现Excel与Word文件中表格数据的导入导出
    问题描述:Excel文件“测试文件.xlsx”中有3个worksheet,每个worksheet中的行数和列数都不相同,要求把这3个worksheet中的数据导入到一个Word文件中,每个worksheet生成一个单独的表格,每个表格的样式不同。在Excel和Word之间,是支持表格直接复制的,如果数量少,可以直接复制,如果多的话,可以参......
  • Python+matplotlib绘制背景色和坐标轴刻度变化的动态柱状图
    问题描述:已知某商品从2000年至2019年每年12个月的价格波动情况,要求绘制动态柱状图进行可视化,要求每年改变一次轴域背景色。参考代码:运行效果:公众号“Python小屋”......
  • Python正则表达式常用flag含义与用法详解
    Python正则表达式模块re中很多函数都支持一个flag参数,用来对正则表达式进行补充说明,例如findall(pattern,string,flags=0)match(pattern,string,flags=0)search(pattern,string,flags=0)sub(pattern,repl,string,count=0,flags=0)split(pattern,string,maxsplit=0,fla......
  • Python+matplotlib绘制动态折线图
    问题描述:动态绘制折线图。参考代码:运行效果:公众号“Python小屋”......
  • Python+matplotlib实现鼠标跟随的动态距离标注
    问题描述:显示一幅图像,鼠标左键按下后移动时实时显示当前位置与鼠标按下时初始位置的直线距离,同时显示一条从初始位置到当前位置的红色直线。参考代码:运行效果:公众号“Python小屋”......