Python教程

Python基础测验及答案

本文主要是介绍Python基础测验及答案,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

题目

Python命令相关

  1. 如何在命令行执行一个.py文件?
  2. 如何使用Python调用一个模块?
  3. 如何在命令行执行一小段Python代码?
  4. 如何区分命令行(cmd)环境和Python交互环境,执行.py文件和安装包在哪个环境?在Python交互环境如何验证一个包是否已安装?

包安装相关

  1. 如何安装Python三方包?在命令行如何检查一个包是否已安装?
  2. 环境变量PATH的作用是什么?命令行报错pip不是可执行命令的原因是什么?如何处理?
  3. pip安装时如何使用豆瓣源安装,遇到以下报错,如何处理?

PyCharm相关

  1. PyCharm中如何确定使用的是虚拟环境还是本机环境?如何切换解释器?如何查看环境中安装了哪些包?
  2. PyCharm中如何查看所使用函数的方法定义,需要哪些参数,分别什么格式?
  3. PyCharm中有浅红色高亮和浅黄色高亮,分别是什么原因,如何查看异常的详细信息?
  4. 代码报错,如何查看是什么异常?异常的原因说明以及报错的是哪一行?

Python数据类型相关

  1. Python中有哪些数据类型?哪些是可变的,哪些是不可变的?
  2. 如何判断一个字符串是不是数字?
  3. 将name = ‘LiLy‘ age=18 gender=’女’,将name、age、gender变量实际值填入字符“我是Kevin,年龄21,性别male”
  4. 将一个字符串“I am the whole world”按空格分隔,列表反转,重新按空格拼接成“world whole the am I”
  5. 将一个字典{‘Kevin’: 21, ‘Lily’: 19, ‘John’: 20}改为列表[{‘name’: ‘Kevin’, ‘age’: 21}, {‘name’: ‘Lily, ‘age’: 19}, {‘name’: ‘John, ‘age’: 20}]形式
  6. 列表和集合的区别是什么?在大数据量查询时哪个更高效?
  7. 深拷贝和浅拷贝有什么区别?

解析

Python命令相关

1. 如何在命令行执行一个.py文件?

在命令行运行 python 文件路径/文件名,如

如果文件就在当前路径下,就可以直接python hello.py
注:MacOS的同学由于系统中默认为python2,终端中请使用python3 路径/脚本名
注:命令行使用python命令实际上是从环境变量PATH所配置的目录中逐个选择python.exe(MacOS/Linux为python)来解释执行路径指定的脚本,在某些情况如使用Jenkins/crontab执行时有可能没有权限读取环境变量PATH的值,导致找不到python,可以使用python.exe的绝对路径执行,如

C:\Users\Secoo\AppData\Local\Programs\Python\Python37-32\python.exe D:\hello.py

2. 如何使用Python调用一个模块?

很多python的三方模块在安装时会在python安装路径的Scripts目录下生产可执行文件,如pytest、pip、HttpRunner的hrun等。一般来说,Scripts目录也需要配置到环境变量PATH中去,这样就可以直接在命令行中使用pytest、pip等命令。
当命令行提升pytest、pip等不是可执行命令时(即Scripts没有配置环境变量),我们也可以使用python -m 调用指定模块,如

python -m pytest 用例路径
python -m pip install 要安装的三方包

注:同样实用与MacOS,只是路径不是Scripts,pip显示不是可执行命令时,可以临时使用python3 -m pip 来安装包

3. 如何在命令行执行一小段Python代码?

使用python -c 代码可以不进入Python交互环境执行一小段代码,如下图:

4. 如何区分命令行(cmd)环境和Python交互环境,执行.py文件和安装包在哪个环境?在Python交互环境如何验证一个包是否已安装?

命令行和Python交互环境的提示符不同,如下图
命令行环境,使用python执行python脚本、pip安装包、pytest执行用例,或执行其他系统命令。

Python交互环境,用来调试运行Python代码,如import导入,声明变量,if判断,定义函数等等,在交互环境中可以通过import 三方包名,看是否报错来验证这个包是否已安装,如

>>> import selenium

不报错则说明selenium已安装

包安装相关

5. 如何安装Python三方包?在命令行如何检查一个包是否已安装?

使用pip install 包名 在线安装一个包,也可以从https://pypi.org上搜索下载包的.whl离线包,使用pip install 离线包路径来安装,(所依赖包仍需要在线安装)。
在命令行使用pip install 包名,如果显示Requirement already satisfied,则说明已安装,如下图

也可以用pip list命令查看已安装的包,如下图

注:Windows的字符串搜索使用findstr,MacOS/Linux需要改为grep

6. 环境变量PATH的作用是什么?命令行报错pip不是可执行命令的原因是什么?如何处理?

环境变量PATH的作用是,在命令行任意一个路径下可以直接使用某个命令或工具,如python、pip、pytest、java、adb等。在命令行输入python命令时会从环境变量PATH所配置的路径中逐个去找python.exe或python.cmd等可执行文件。
命令行报错pip不是可执行命令,是因为在当前PATH的所有路径中找不到pip.exe即,pip.exe所在的目录没有配置到环境变量中去。
可以使用python -m pip 来临时使用pip,或者包pip.exe所在目录python安装目录中是Scripts目录配置到环境变量PATH中去。

注:更新环境变量后需要重新打开cmd才能生效,PyCharm的命令行则需要重启才能生效(读取到最新的环境变量)。

  1. pip安装时如何使用豆瓣源安装,遇到以下报错,如何处理?

报错分为两个颜色,红色是出错,遇到出错时,我们先看最下一行
..ReadTimeoutError: HTTPSconnectionPool(….)
冒号前是异常类型,冒号后是具体说明,稍微翻译一下可以知道,这个是一个“读取超时错误”,原因是HTTP连接池连接服务器files.pythonhosted.org,读取超时。由于在线安装时,三方包是从国外网站上下载的,当三方包较大及网络不好时很容易发生这种情况。
解决方法是,重试或者使用国内源来安装(源就是一个镜像网站,里面也有各种包)。
Pip安装时使用-i指定使用的源,如使用豆瓣源安装就会快很多。

pip install selenium -i https://pypi.douban.com/simple/

黄色的为警告,提示当前pip不是最新版本,可以忽略,也可以使用提示的python -m pip install –upgrade pip命令进行升级。

PyCharm相关

8. PyCharm中如何确定使用的是虚拟环境还是本机环境?如何切换解释器?如何查看环境中安装了哪些包?

PyCharm默认新建项目时会新建虚拟环境(没有任何三方包的新环境),如下图

你再命令行安装的包(安装到了本地环境),虚拟环境中是没有的,这时候你代码中去导入一个包会发现报错,如下图

我可以打开终端,来查看是否使用了虚拟环境,如下图

前面有(venv)的就是虚拟环境(即没有任何包,需要重新安装)。
我们可以再PyCharm的终端使用pip list或在设置中查看当前环境的包,点击Files->Settings如下图

找到并点击 Project: 你的项目名下的Python Interpreter,如下图

我们可以查看到当前环境中的包,可以通过上面的下拉框来切换解释器(即环境),也可以通过下面的加号安装所需要的包。
注:前期在新建项目时,可以点开Python解释器的折叠,直接选择本地环境来避免此问题。

9. PyCharm中如何查看所使用函数的方法定义,需要哪些参数,分别什么格式?

我们在调用一个函数(特别是别人写的)时,往往需要知道怎么使用,即需要几个、什么类型的参数,返回什么类型的结果。在PyCharm中一般我们可以鼠标移动到调用函数上可以看到函数的定义,如下图:

这个表示,calc模块的add函数,有两个参数,都需要int整数格式,返回值为int整数格式。
我们也可以按住Ctrl键,鼠标移动到函数名上,查看提示。
当需要查看函数的具体定义和处理过程时,我们可以按住Ctrl键,鼠标点击函数名,调整到该函数,来查看函数的源码,如下图

10. PyCharm中有浅红色高亮和浅黄色高亮,分别是什么原因,如何查看异常的详细信息?

浅红色高亮及红色波浪线表示报错,常见的是标点、括号格式或语法错误。
浅黄色高亮一般是函数参数异常或对象无此属性或方法,如下图。

11. 代码报错,如何查看是什么异常?异常的原因说明以及报错的是哪一行?

代码报错别紧张,一般先看报错最下面一行,冒号前是异常类型,冒号后是具体原因说明。

报错的行可以从上面看到,是main.py这个文件的第3行driver = webdriver.Chrome()报的错。
稍微翻译一下这是一个selenium常规异常中的“会话不能创建异常”,会话即和浏览器的连接交互。翻译一下具体愿意为,
信息:会话不能创建:这个版本的ChromeDriver只支持86版本的Chrome,当前的浏览器版本为89.0.4389.82,使用的浏览器地址为…
从翻译的报错原因我们可以分析出是我们用的chromedriver版本太老,不支持当前的浏览器,解决方法就是重新下载对应版本的chromedriver即可。

Python数据类型相关

12. Python中有哪些数据类型?哪些是可变的,哪些是不可变的?

如何判断一个字符串是不是数字?
Python中常见的数据类型有:字符串、数字(整型、浮点、布尔型)、列表、元祖、字典、集合。
可变类型:列表、字典、普通集合是可变的
不可变类型:字符串、数字、元祖、frozen set(不可变集合)
可变类型一般为混合容器型,如列表,字典,可以随意增加删除,可以容纳任何类型的元素。
使用字符串的is_number()或is_digit()方法来判断字符串是否数字,如
‘123’.is_number()
返回为True则表示是数字

注:不可变类型,如字符串,在修改时会创建新的变量。
为什么要区分可变和不可变呢,因为有一种东西叫Hash(即散列表),它是通过变量来计算得出存储地址的,这就要求变量不能修改,不然就找不到它的存储地址了。
因此不可变类型,字符串,数字,元祖等被称为可Hash的。Python中的字典和集合就是基于Hash类型的,字典的key只能是不可变类型。
哈希类型(字典、集合)因为是计算一下就知道存储地址,因此无论有多少数据,查询一个数据只需要一下操作,查询效率很高。

13. 将name = ‘LiLy‘ age=18 gender=’女’,将name、age、gender变量实际值填入字符“我是Kevin,年龄21,性别male”

这是一个字符串格式化操作,我们通常需要将一批变量的值填入一个字符串中,拼接是最low的方式,一般我们先在字符串中放入占位符,然后将变量依次填入,4中方法如下图

14. 将一个字符串“I am the whole world”按空格分隔,列表反转,重新按空格拼接成“world whole the am I”

字符串分隔成列表(split),列表按分隔符组装层字符串(join)是最常用的两种方式,答案如下图。

也可以一行代码实现

注:这里使用了reversed(),这个全局函数返回一个反转后的新列表,而列表的reverse()方法,是对原列表进行反转,返回是None,我们使用join要求参数时一个列表,所以需要使用reversed()。

15. 将一个字典{‘Kevin’: 21, ‘Lily’: 19, ‘John’: 20}改为列表[{‘name’: ‘Kevin’, ‘age’: 21}, {‘name’: ‘Lily, ‘age’: 19}, {‘name’: ‘John, ‘age’: 20}]形式

列表、字典的遍历及重新组装是非常常用的操作,代码如下图

也可以使用推导式快速得出结果

注:遍历字典的key, value时,需要遍历字典的.items()方法而不是字典本身。

16. 列表和集合的区别是什么?在大数据量查询时哪个更高效?

列表有点像数组,在内存中连续存储,使用索引查找非常方便,通过值查找则要从头开始逐个对比,因此列表约长,这个对比查找过程越慢。
集合基于Hash类型,元素存储的地址是计算出来的,无论数据量多大,查找一个元素始终只需要一步操作。因此在大数据量查找时集合效率更高。

17. 深拷贝和浅拷贝有什么区别?

Python中的列表和字典是容器类型,当一个列表中存入了一个子列表或字典时,这时实际存的是该子列表的引用(即地址)。
浅拷贝(copy)只拷贝第一层,其中的子列表等集合类型,只拷贝引用,即还是同一个子列表对象。
深拷贝(deepcopy)则会对所有层的子容器类型的值进行同步拷贝,生成新的对象,如下图

这篇关于Python基础测验及答案的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!