一、单选题
【文件】
*1.【单选题】 ——文件:读取方法
下列哪个选项可以从文件中读取任意字节的内容?(C )A
- A.read()
- B.readline()
- C.readlines()
- D.以上全部
A\B\C三种方法都是可以读取文件中任意的字节内容的,选择C是当时受关键字眼“指定”影响,理解错了
文件的读取 作用 read() 读取从指定文件中读取指定字节的文件内容,若无设置参数即默认获取全部内容 readline() 读取指定文件的一行内容 readlines() 读取文件的所有行,既是一次性读取所有数据
2.【单选题】——文件:打开模式种类
以下选项中,不是Python对文件的打开模式的是? (D )。
- A.r’
- B.+’
- C.‘w’
- D.c’
python中通常处理文本文件,如果要处理二进制文件(如声音、图像),则在该模式的参数添加‘b’
mode参数 描述 'r' / 'rb' 以只读模式打开文件/二进制文件,如果文件不存在则抛出错误 'w'/ 'wb' 以只写模式打开文件/二进制文件,如果文件存在则覆盖,如果文件不存在则创建新文件 'a'/ 'ab' 以追加模式(只写)打开文件/二进制文件,只允许在文件末尾追加数据,如果文件存在则添加内容,如果不存在则创建新文件 'r+' / 'rb+' 读取更新模式 'w+'/ 'wb+' 写入更新模式 'a+'/ 'ab+' 追加更新模式 'b' 以二进制模式打开文件,用于读取或写入二进制数据 't' 以文本模式打开文件,用于读取或写入文本数据(默认) '+' 以读写模式打开文件,可同时读取和写入文件 'U' 在Python 2中,读取换行符通用,与'r'和'rt'相同;在Python 3中,已经废弃,不推荐使用
*3.【单选题】——文件:打开文件指定模式
下列哪个选项可以以追加模式打开文件( C)?D
- A.a
- B.ab
- C.a+
- D.以上全部
当时为什么会做错这道题?没记清这些参数,对符号这些比较敏感,看到“+”,又是追加模式,直接下意识选了C
'a'/ 'ab' 以追加模式(只写)打开文件/二进制文件,只允许在文件末尾追加数据,如果文件存在则添加内容,如果不存在则创建新文件 'a+'/ 'ab+' 追加更新模式
4.【单选题】 ——文件:方法-获取当前读写位置
下列选项中,用户获取当前读写位置的是(C )。
- A.open()
- B.close()
- C.tell()
- D.seek()
选项 功能 语法格式 open() 打开文件,返回一个文件对象 open(file,mode=' r',encoding=None)
·file表示文件路径(绝对/相对)
·mode可选参数,表示文件的打开模式,默认‘r’
·encoding可选参数,表示文件的编码形式
close() 关闭文件 file.close()
没有参数直接通过建立的文件对象进行调用
也可以使用with语句自动关闭文件.
with语句可以打开文件并且赋值给文件对象,在操作语句结束后自动关闭文件。
tell() 定位文件,获取当前读写位置,返回一个表示当前位置的整数 file.tell()
文件的读写位置默认为文件首部‘0’
seek() 定位文件,设置文件读写位置,接受一个表示要设置的位置整数参数 file.seek(offset,from)
·offset表示偏移量2,即读写位置需要移动的字节数
·from用于指定文件的读写位置,设值范围:0、1、2
·0表示在开始位置读写
·1表示在当前位置读写
·2表示在末尾位置读写
【函数】
5.【单选题】——函数:参数
下列关于函数参数的说法中,错误的是(D )。
- A.若无法确定需要传入函数的参数个数,可以为函数设置不定长参数
- B.当使用关键字参数传递实参时,需要为实参关联形参
- C.定义函数时可以为参数设置默认值
- D.不定长参数*args 可传递不定数量的关联形参名的实参
选项A:可以使用不定长参数来接受不确定数量的参数,例如使用 *args
来接受任意数量的位置参数。选项B:使用关键字参数传递实参时,需要为实参关联形参,即通过指定形参名来传递实参。 选项C:在函数定义时,可以为参数设置默认值。这样,在函数调用时如果没有对应的实参传递,将使用默认值。 选项D:不定长参数 *args
只能接受位置参数,而不能传递关联形参名的实参。如果要传递关联形参名的不定数量实参,应使用双星号(**kwargs
)来定义和传递。
参数 区别 形式参数(形参) 定义函数时,括号内的参数 实际参数(实参) 调用函数时,括号内的参数
参数的传递方式 传递的实参类型 值传递 实参类型为不可变类型(字符串、数字、元组) 引用(地址)传递 实参类型为可变类型(列表、字典)
参数类型的传递 描述 位置参数传递 按照定义顺序传递参数值,调用时参数的数量和顺序要和定义时的保持一致 关键字参数传递 使用参数名和参数值进行指定,不需要按照定义顺序传递参数
def area(c,k): return c*k #关键字传参,顺序无需一致 print("面积为:",area(k=2,c=1))
默认参数设置传递 在函数定义时为参数指定默认值,因而,函数在调用时如果未提供参数值,则使用默认值进行运算返回结果 可变(不确定)参数传递 允许函数接受任意数量的参数,使用星号 (*) [元组形式]或者双星号 (**) [字典形式]表示,把接收到的数据打包成元组或字典传入函数体。
(1)这种形式的参数命名可以规范化使用“*arg”或“**kwargs”,为空时,则代表传递的是空元组、空字典 (2)如果实参是元组、列表、集合,可以使用“*”将其拆分为多个值,按位置传递给形参;如果实参是字典,使用“**”拆分为多个键值对,按关键字传递给形参
#可变参数函数定义 def mydef(*a): print("mydef: ",a) s = 0 for i in a: s += i return s #测试函数 n1 = 1 n2 = 2 n3 = 3 print("n1+n2= ", mydef(n1,n2)) print("n1+n2+n3= ", mydef(n1,n2,n3)) print("n1+n2+n3+5= ", mydef(n1,n2,n3,5))
运行结果:
6.【单选题】 ——函数:递归函数与匿名函数
下列关于 Python 函数的说法中,错误的是( C)。
- A.递归函数就是在函数体中调用了自身的函数
- B.匿名函数没有函数名
- C.匿名函数与使用关键字 def 定义的函数没有区别
- D.匿名函数中可以使用 if 语句
选项C:有区别,匿名函数无需定义标识符
递归函数 特点 说明 定义 函数在其定义中调用自身的过程称为递归。
递归的实现通过:函数 + 分支结构。
结构 链条:计算过程存在递归链条
基例:存在一个或多个不需要再次递归的基例
使用场景 递归函数通常用于解决可以被分解为相同问题的子问题的场景。 def factorial(n): if n == 0: return 1 else: return n * factorial(n-1)
匿名函数 特点 说明 定义 匿名函数是没有函数名的函数,因使用lambda保留字定义,也称为lambda函数。
lambda函数返回函数名作为结果.
<函数名>=lambda<参数>: <表达式> 等价于函数的定义格式
结构 匿名函数通过lambda关键字定义,可以接受任意数量的参数,但只能有一个表达式作为函数体。 使用场景 匿名函数通常用于简化代码,尤其是在需要定义简单的功能或作为其他函数的参数传递时。 #使用lambda表达式把下面函数变为匿名函数 def fun(x,y=3): return x*y #等价于 lam=lamda x,y=3:x*y print(lam(2)) #输出结果为6
7.【单选题】 ——函数:定义声明部分
下列哪个选项不是Python定义函数时的必要部分?(C )
- A.def
- B.()
- C.return语句
- D.以上全部
函数的定义语法格式:
def <函数名>(参数<非可选参数>,<可选参数>(0个或多个)): <函数体> return <返回值>
- def是函数定义的关键词
- 参数列表出现多个参数时,之间需要用逗号隔开,参数即使为0,括号也不能省去
- [return [返回值]] 根据实际情况设置,可以没有
- 如果函数没有实现任何功能,可以使用pass语句作为占位符
【关键词】
8.【单选题】 ——关键词:定义函数
下列哪个选项是Python中定义函数时使用的关键字?(A )
- A.def
- B.func
- C.function
- D.class
看第七题的题解
9.【单选题】——关键词:定义匿名函数
下列哪个选项是定义匿名函数时所用的关键字( B)?
- A.global
- B.lambda
- C.anonymous
- D.guest
看第六题题解
10.【单选题】 ——关键词:主动引发异常
下列选项中,能主动引发异常的是( A)。
- A.raise
- B.except
- C.assert
- D.try
主动抛出异常(raise\assert) raise关键字 用于显示地引发异常。通过raise可以主动引发各种类型的异常。 assert关键字 用于在程序中进行断言,如果断言条件不满足,则抛出AssertionError异常。 选项 A. raise 是正确答案,因为只有通过raise关键字我们才能主动引发异常。选项 C. assert 是错误答案,因为assert关键字并不会主动引发异常,而是在条件不满足时才会抛出AssertionError异常。
【模块】
11.【单选题】 ——模块概念
以下关于模块说法错误的是? (C )。
- A.一个xx.py就是一个模块
- B.任何一个普通的xx.py文件可以作为模块导入
- C.模块文件的扩展名不一定是 .py
- D.运行时会从制定的目录搜索导入的模块,如果没有,会报错异常
选项A:在Python中,一个以 .py 为扩展名的文件就是一个模块,可以通过导入该文件来使用其中定义的函数、类和变量。
选项B:只要是以 .py 为扩展名的普通文件,都可以作为模块被导入并使用。
选项C:在Python中,模块文件的扩展名必须是 .py。
选项D:在Python中,解释器会按照一定的搜索路径来查找导入的模块文件。如果在指定的目录中找不到模块文件,就会抛出 ModuleNotFoundError 异常。
【异常】
12.【单选题】 ——异常处理
关于程序的异常处理,以下选项中描述错误的是?(C )。
- A.程序异常发生经过妥善处理可以继续执行
- B.异常语句可以与 else 和 finally 保留字配合使用
- C.编程语言中的异常和错误是完全相同的概念
- D.Python 通过 try、except 等保留字提供异常处理功能
选项C:程序运行期间检测到的错误称为异常。二者虽然相关,但并不完全相同。异常是指在程序执行过程中发生的意外或不正常的情况,可以被程序捕获并处理。而错误可以是语法错误、逻辑错误或运行时错误等,不一定都是异常。
13.【单选题】——异常:语法错误
当解释器发现语法错误的时候,会引发如下哪个异常?(B )
- A.ZeroDivisionError
- B.SyntaxError
- C.IndexError
- D.KeyError
只有选项B是与解释器发现语法错误相关的异常。其他选项描述的异常是在程序执行过程中出现的错误,而不是与语法相关的错误。
在PyCharm中运行含有语法错误的代码后,结果输出区会显示如下错误信息:
14.【单选题】——异常:类型-执行代码1/0
执行代码1/0,引发什么异常的是( A)
- A.ZeroDivisionError
- B.SyntaxError
- C.IndexError
- D.KeyErro
15.【单选题】——异常:类型-FileNotFoundError
关于FileNotFoundError异常产生的原因,下列描述正确的是( D)。
- A.尝试访问一个未声明的变量
- B.使用序列中不存在的索引
- C.使用映射中不存在的键
- D.试图打开不存在的文件
异常类型 说明 选项A NameError 在使用未声明的变量时引发的异常 选项B IndexError 在使用不存在的索引访问序列时引发的异常 选项C KeyError 在使用不存在的键访问映射时引发的异常
16.【单选题】 ——异常概念
关于异常的说法,下列描述错误的是( D)。
- A.所有异常都是基类Exception的成员
- B.如果程序中有异常没有处理程序会终止执行
- C.程序会反馈错误信息,包括错误的名称、原因和错误发生的行号
- D.无论是否捕获异常,程序都会终止执行。
选项A:这是正确的说法。在Python中,所有的异常类都是Exception类的子类。
选项B:如果程序中发生了异常,而没有相应的异常处理程序来捕获和处理异常,程序会终止执行并抛出未处理的异常。
选项C:当出现异常时,Python会打印出错误信息,其中包括异常的名称、原因和发生异常的行号。
选项D:如果程序中正确地捕获和处理了异常,程序可以继续执行,而不会终止。
17.【单选题】——异常语句
无论程序是否捕获到异常,都必须执行的语句是( D)。
- A.try
- B.except
- C.else
- D.finally
*18.【单选题】——异常语句
当没有捕获到错误信息时,会执行下列哪个语句?(D )C
- A.try
- B.except
- C.else
- D.finally
19.【单选题】——异常语句
下列语句中,哪个是程序会监控错误的语句?( A)
- A.try
- B.except
- C.else
- D.finally
异常处理的基本使用 try : <语句块1> except : <语句块2> try : <语句块1> except <异常类型> : <语句块2>
异常处理的高级使用 try : <语句块1> except : <语句块2> else : <语句块3> finally : <语句块4> (1)else 语句块3在不发生异常时执行 (2)finally对应语句块4一定执行。 而且finally子句与try-except语句连用时,无论try-except是否捕获到异常,finally子句中的代码都要执行。
二、判断题
【函数】
20.Python中使用关键字func定义函数。(错 )
21.局部变量是在函数内定义的变量,只在定义它的函数内生效。(对 )
22.函数的位置参数有严格的位置关系。(对 )
23.函数在定义完成后会立刻执行。(错 )
24.函数名的规则和变量是一样的。(对 )
35.当函数的参数列表为空时,函数名后的圆括号可以省略。(错 )
36.定义好的函数直到被程序调用时才会执行。 ( 对)
【文件】
*27.若程序中使用with语句打开文件,with语句中未调用close()方法,则文件将在程序跳出with结构时被关闭。(错 )对
28.在一次打开和关闭操作之间,每调用一次write()方法,程序向文件中追加一行数据,并返回本次写入文件中的字节数。(对 )
29.使用readline()每次可读取一行数据,假设本次读取了5行数据,下次打开文件时,readline()方法将会读取第6行数据。(错 )
.30.一般情况下,文件的读写是顺序的,默认情况下程序从文件中数据的起始位置开始读取数据。(对 )
【异常】
31.程序没有捕获到任何错误信息时,就不再执行任何except语句。(对 )
32.省略try-except语句中的异常类可以处理该语句中捕获的所有异常,但不能获取异常的具体信息。 (对 )
33.Python默认处理异常的方式是终止应用程序并打印提示信息。( 对)
34.assert 断言语句多用于程序开发测试阶段,其主要目的是确保代码的正确性。如果开发人员 能确保程序正确执行,那么不建议再使用 assert 语句抛出异常。 ( 对)
35.raise语句能向外传递异常。(对 )
*36.若程序中的异常处理语句指定的异常与程序运行时产生的异常不一致,程序仍会崩溃(错)对
37.使用 raise 语句可以引发特定异常。(对 )
38.assert 断言语句用于判定一个表达式是否为真,如果表达式为 True,不做任何操作,否则引 发 AssertionError 异常。( 对)
39.异常语句中不一定有finally子句。(对 )
*40.异常处理的主要目的是防止因外部环境的变化导致程序产生无法控制的错误,而不是处理程序的设计错误。(错 )对