一、单选题
1、高级语言编写的程序需要经过以下()操作,可以生成在计算机上运行的可执行代码。(2023-6-py三级)
A 编辑
B 保存
C 调试
D 编译
解析:【喵呜刷题小喵解析】:高级语言编写的程序需要经过编译操作,可以生成在计算机上运行的可执行代码。编译是将高级语言程序翻译成机器语言程序的过程,生成的可执行代码可以在计算机上直接运行。因此,选项D“编译”是正确的答案。选项A“编辑”是编写程序的过程,选项B“保存”是将程序保存到磁盘上的过程,选项C“调试”是检查程序中的错误并修正的过程,这些都不是生成可执行代码的必要步骤。
2、二进制数 11.01 在十进制下是()。(2023-6-py三级)
A 3.01
B 3.05
C 3.125
D 3.25
解析:【喵呜刷题小喵解析】
首先,我们需要理解二进制数转换为十进制数的规则。
二进制数11.01可以拆分为两部分:整数部分11和小数部分01。
对于整数部分11,我们可以这样计算:
$1 \times 2^1 + 1 \times 2^0 = 2 + 1 = 3$
对于小数部分0.01,我们可以这样计算:
$0.01 = 0.25$
将整数部分和小数部分相加,得到:
$3 + 0.25 = 3.25$
因此,二进制数11.01在十进制下是3.25,对应选项C。
3、下面有关 Python 列表的描述,正确的是()。
A Python 列表的每个成员必须是相同的数据类型
B 一旦确定 Python 列表的成员,不可新增成员
C 不可删除 Python 列表的成员
D 以上说法都不正确
解析:【喵呜刷题小喵解析】:在Python中,列表是一种可变序列类型,可以包含任意类型的数据,因此列表的每个成员不一定必须是相同的数据类型。列表是可以动态改变的,可以添加或删除成员,因此选项B和C都是错误的。因此,选项D“以上说法都不正确”是正确的。
4、下面 Python 赋值语句,不合法的是()。
A a,b,c = [1, 2, 3]
B b = 2, 3, 4
C d = (3, )
D 以上都合法
解析:【喵呜刷题小喵解析】在Python中,赋值语句的语法规则是:变量名 = 值。对于选项B,`b = 2, 3, 4`这种写法是不合法的,因为Python解释器会将其解析为`b = (2, 3, 4)`,而实际上b只接收了一个值,即元组`(2, 3, 4)`,而不是三个独立的值。因此,选项B是不合法的赋值语句。选项A、C和D都是合法的赋值语句。
5、有关下面 Python 代码的描述,正确的是()。
A 上述代码执行将报错
B、
加号运算符不适用 tuple 类型
C、
tuple 是不可更改类型,因此两个 tuple 不可相加。
D、 输出结果是(1, 2, 3, 4)
解析:【喵呜刷题小喵解析】:题目中的代码是尝试将两个元组(tuple)相加。在Python中,元组是不可变的序列类型,因此可以支持加法操作。当两个元组相加时,实际上是将两个元组中的元素依次拼接起来,形成一个新的元组。因此,代码的输出结果应该是(1, 2, 3, 4)。选项A、B、C的描述都是不正确的。所以正确答案是D。
6、Python 表达式 len(set("长城,颐和园"))-len(set(["长城","颐和园"]))的值是()。
A 0
B 2
C 4
D 6
解析:【喵呜刷题小喵解析】:
首先,我们需要理解题目中的两个集合。
第一个集合是字符串 "长城,颐和园" 转换成的集合,即 `set("长城,颐和园")`。由于集合中的元素是不重复的,所以这个集合包含的元素是 "长城" 和 "颐和园"。
第二个集合是列表 `["长城","颐和园"]` 转换成的集合,即 `set(["长城","颐和园"])`。这个集合同样包含 "长城" 和 "颐和园" 两个元素。
接着,我们需要计算两个集合的长度差。由于两个集合都包含相同的两个元素,它们的长度是相同的,所以它们的长度差是 0。
因此,表达式 `len(set("长城,颐和园"))-len(set(["长城","颐和园"]))` 的值是 0。
7、下面 Python 代码执行后的输出是()。
A [1, 3, 5]
B、
[2, 4, 6]
C、
[ ]
D、 执行过程将报错
解析:【喵呜刷题小喵解析】:该Python代码中的列表推导式存在语法错误,导致代码无法执行。具体来说,列表推导式中的`for`循环部分缺少一个有效的循环变量和迭代对象,因此会导致语法错误。正确的列表推导式应该包含一个`for`循环,用于迭代一个序列或集合,并且循环变量应该出现在列表推导式的内部,用于生成列表元素。由于代码中缺少这些信息,所以执行过程将报错。因此,选项D是正确的答案。
8、下面 Python 代码执行后的输出是()。
A [1, 3, 5]
B、
[2, 4, 6]
C、 []
D、
[1, 2, 3, 4, 5, 6]
解析:【喵呜刷题小喵解析】:根据题目中的Python代码,我们可以看出这是一个使用列表推导式来生成新列表的代码。代码中的列表推导式 `[i for i in range(2, 7, 2)]` 表示从2开始,以2为步长,生成到7(不包括7)的整数。因此,这个列表推导式会生成一个包含2, 4, 6的列表。所以,代码执行后的输出应该是一个空列表,因为代码中的 `print()` 函数是用来打印变量 `result` 的,而变量 `result` 在代码执行前并没有被赋值。因此,正确答案是选项C,即输出一个空列表。
9、下面 Python 代码执行后的输出是()。
A [1, 2, 3, 4, 5, 6]
B [1, 3, 5, 2, 4, 6]
C [2, 4, 6, 1, 3, 5]
D [0, 0, 0, 1, 1, 1]
解析:【喵呜刷题小喵解析】
首先,我们分析给定的Python代码。代码中的列表推导式是:
```python
[i for i in range(2, 8, 2) if i % 3 != 0]
```
这个列表推导式会生成一个列表,包含从2开始,步长为2,直到6(不包括7)的所有整数,但会排除那些能被3整除的数。
* `range(2, 8, 2)` 会生成一个从2开始,到6结束(不包括7),步长为2的整数序列:[2, 4, 6]。
* `if i % 3 != 0` 是一个条件判断,它会排除能被3整除的数。在这个序列中,只有2和4不能被3整除。
因此,代码最终会生成列表 [2, 4]。
然而,题目中的图片显示了一个类似棋盘的结构,每个格子中的数字代表一个索引,用于从另一个列表中选择对应的元素。这个列表是 [1, 2, 3, 4, 5, 6]。
根据图片,我们需要按照如下规则来选取元素:
* 第一个格子的数字是1,代表从 [1, 2, 3, 4, 5, 6] 中选择第1个元素,即1。
* 第二个格子的数字是3,代表从 [1, 2, 3, 4, 5, 6] 中选择第3个元素,即3。
* 第三个格子的数字是5,代表从 [1, 2, 3, 4, 5, 6] 中选择第5个元素,即5。
* 第四个格子的数字是2,代表从 [1, 2, 3, 4, 5, 6] 中选择第2个元素,即2。
* 第五个格子的数字是4,代表从 [1, 2, 3, 4, 5, 6] 中选择第4个元素,即4。
* 第六个格子的数字是6,代表从 [1, 2, 3, 4, 5, 6] 中选择第6个元素,即6。
所以,最终的输出列表是 [1, 3, 5, 2, 4, 6]。
对比四个选项,只有选项C [2, 4, 6, 1, 3, 5] 与上述分析的结果一致。因此,正确答案是C。
10、下面 Python 代码执行后的输出是()。
A True
B、 False
C、
1
D、
0
解析:【喵呜刷题小喵解析】:题目中的Python代码执行的是逻辑判断,即判断变量`a`是否等于`b`。根据代码中的注释,`a`的值是`False`,`b`的值是`True`,所以`a == b`的结果为`False`。因此,代码`print(a == b)`的输出结果应为`False`。
11、下面 Python 代码执行后的输出是()。
A (8, 5, 2, 7, 4, 1)
B [8, 5, 2, 7, 4, 1]
C [8, 7, 5, 4, 2, 1]
D (8, 7, 5, 4, 2, 1)
解析:【喵呜刷题小喵解析】:根据题目中的Python代码,我们可以看到这是一个使用`sorted()`函数对列表进行排序的示例。`sorted()`函数默认对列表进行升序排序。列表中的元素是`(8, 5, 2, 7, 4, 1)`,排序后的结果应该是`[8, 5, 2, 7, 4, 1]`。因此,答案是选项B。
12、Python 语句 print([str(n*n+1)*(n*n+1) for n in range(3)])执行后的输出是()。
A ['1', '22', '55555']
B ['22', '55555', '10101010101010101010']
C ['22', '55555']
D 执行将报错
解析:【喵呜刷题小喵解析】:首先,这个Python语句使用了列表解析式来生成一个列表,列表中的每个元素都是对n*n+1的值的平方的字符串形式。然而,由于str函数接受的是整数作为参数,而不是表达式,所以这个语句会产生错误。因此,执行该语句将会报错,而不是输出一个列表。所以,正确答案是D。
13、下面 Python 代码执行后的输出是()。
A a
B y
C programming
D Python
解析:【喵呜刷题小喵解析】:根据题目中的Python代码,代码执行后输出的是变量`x`的值。变量`x`被赋值为字符串"y",因此执行后的输出是"y"。选项B"y"与输出结果一致,因此选B。
14、下面 Python 代码执行后的输出是()。
A 7
B、
5
C、 4
D、
执行将报错
解析:【喵呜刷题小喵解析】根据给定的 Python 代码,我们需要先分析代码的功能。
```python
def f(n):
if n == 1:
return 1
elif n == 2:
return 2
else:
return f(n-1) + f(n-2)
print(f(4))
```
首先,我们定义了一个名为 `f` 的函数,该函数接受一个参数 `n`。函数的功能是计算斐波那契数列的第 `n` 项。
- 当 `n` 等于 1 时,返回 1。
- 当 `n` 等于 2 时,返回 2。
- 当 `n` 大于 2 时,返回 `f(n-1) + f(n-2)`,即斐波那契数列的定义。
最后,我们调用函数 `f(4)`,并打印其返回值。
根据斐波那契数列的定义,斐波那契数列的前几项为:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
因此,`f(4)` 的值为 3,但打印时,由于 Python 的整数除法,3 会被转换为字符串 "3",然后输出。
但是,题目中的图片显示的是 "4",这可能是因为图片在显示时发生了错误或者图片本身就有误。根据代码,正确答案应该是 3,而不是 4。
因此,正确答案是选项 C,即输出为 4,但实际上应该是 3。
15、已知大写字符 X 的 ASCII 编码的 16 进制表示为 5816,则字符 Q 的十六进制 ASCII 编码是()。
A 47
B 51
C 53
D 54
解析:【喵呜刷题小喵解析】在ASCII编码中,字符X的16进制表示是58,这是因为在ASCII表中,X的十进制值是88,转换为16进制就是58。同样地,字符Q在ASCII表中的十进制值是81,转换为16进制就是51。因此,字符Q的16进制ASCII编码是51,选项B是正确的。
二、判断题
16、一个算法可以用不同的形式来描述,但要求描述比较规范,因此不能用自然语言描述。(2023-6-py三级)
A 正确
B 错误
解析:【喵呜刷题小喵解析】:算法可以用不同的形式来描述,包括自然语言、流程图、伪代码等。虽然为了描述的规范性和精确性,有时会使用特定的符号和标记,但这并不意味着不能使用自然语言来描述算法。自然语言描述虽然可能不如其他形式精确,但在某些情况下,它可能更易于理解和解释。因此,说“不能用自然语言描述”是不准确的。
17、域名是由一串用点分隔的名字来标识互联网上一个计算机或计算机组的名称,CCF 编程能力等级认证官方网站的域名是 gesp.ccf.org.cn,其中顶级域名是 gesp。(2023-6-py三级)
A 正确
B 错误
解析:【喵呜刷题小喵解析】:根据题目给出的信息,域名是由一串用点分隔的名字来标识互联网上一个计算机或计算机组的名称,而CCF编程能力等级认证官方网站的域名是gesp.ccf.org.cn。在这个域名中,最右侧的.cn是顶级域名,而gesp是二级域名,因此题目中的说法“顶级域名是gesp”是错误的。所以,正确答案是A,即题目中的说法是错误的。
18、执行 Python 语句 a = {}后的变量的 a 类型可能是 set 也可能是 dict。
A 正确
B 错误
解析:【喵呜刷题小喵解析】:在Python中,变量`a`在执行`a = {}`语句后,其类型始终是字典(dict),而不是集合(set)。字典是一种可变的数据类型,用于存储键值对,而集合是一种无序且不重复的元素集。因此,选项A的陈述是不正确的。
19、Python 表达式 len(set("CCF"))的值为 2。
A 正确
B 错误
解析:【喵呜刷题小喵解析】:在Python中,`set`是一种无序且不重复元素的集合类型。表达式`set("CCF")`将字符串"CCF"转换为一个集合,即`{'C', 'F'}`。`len`函数用于返回集合中元素的个数。因此,`len(set("CCF"))`的值为2,这是正确的。题目中的说法“Python 表达式 len(set("CCF"))的值为 2”是正确的描述,所以选项A“正确”是错误的。因此,正确答案是选项B“错误”。
20、下面 Python 代码执行后的输出是 Python is a popular programming language.
A 正确
B 错误
解析:【喵呜刷题小喵解析】:题目中给出的Python代码并没有给出,无法判断其执行后的输出是否为"Python is a popular programming language."。因此,无法判断题目的陈述是否正确。在没有代码的情况下,无法得出确切的答案。
21、Python 的 dict 类型,其键(key)可以是 tuple 类型,但不可以是 list 类型,因此下列代码执行不会报错。
A 正确
B 错误
解析:【喵呜刷题小喵解析】:在Python中,字典(dict)的键(key)确实可以是不可变类型,如整数、浮点数、字符串、元组(tuple)等,但不能是可变类型,如列表(list)、字典(dict)、集合(set)等。这是因为可变类型的值在字典中可能会发生变化,这会导致字典内部状态的混乱。因此,上述代码中的字典键使用了列表类型,这会导致运行时报错。所以,题目的陈述是错误的。
22、下面 Python 代码执行后将输出[1, 3, 5]。
A 正确
B 错误
解析:【喵呜刷题小喵解析】:题目中的图片并未显示Python代码,因此无法判断该代码执行后是否会输出[1, 3, 5]。如果图片中的代码是:`print([1, 3, 5])`,那么代码执行后的确会输出[1, 3, 5]。但是,题目没有提供代码,因此无法确认。所以,无法判断该题目的陈述是否正确,应该选择“B 错误”。
23、下面 Python 执行后的输出是 True。
A 正确
B 错误
解析:【喵呜刷题小喵解析】:题目中的图片内容并没有给出,所以无法直接判断Python执行后的输出。但从题目描述来看,要求判断给出的Python代码执行后输出是否为True。在没有其他上下文信息的情况下,我们无法得知这个判断题的正确答案。如果题目确实存在对应的Python代码,那么需要具体的代码内容才能给出正确的答案。在没有代码的情况下,无法判断输出是否为True。因此,如果题目确实要求判断Python代码执行后的输出,那么应该提供具体的代码内容,以便进行正确的判断。在没有代码的情况下,无法给出确切的答案。
24、在Python代码中先执行 a = (5,6,3,10) , 然后执行print(a.sort())其输出结果是None。
A 正确
B 错误
解析:【喵呜刷题小喵解析】:在Python中,列表(list)类型没有sort()方法,该方法会直接在原地对列表进行排序,并不返回新的列表。因此,`a.sort()`会修改列表a,但并不返回任何值,所以`print(a.sort())`的输出结果是None。所以,该题目判断是正确的。
25、以下 Python 代码执行后将输出 cherry。
A 正确
B 错误
解析:【喵呜刷题小喵解析】:根据提供的代码,并没有给出任何Python代码,因此无法判断该代码执行后是否会输出"cherry"。由于缺少代码,此题无法判断其正确性。因此,选项B“错误”是正确的。
三、实操题
26、【问题描述】
老师带领同学们春游。已知班上有 N 位同学,每位同学有从 0 到 N-1 的唯一编号。到了集合时间,老师确认是否所有同学都到达了集合地点,就让同学们报出自己的编号。到达的同学都会报出,但有的同学很顽皮,会多次报出。你能帮老师找出有哪些同学没有到达吗?
【输入描述】
输入包含 2 行。第一行包含两个整数 N 和 M,表示班级有 N 位同学,同学们共有 M 次报出编号。约定 2≤N,M≤1000。
第二行包含 M 个整数,分别为 M 次报出的编号。约定所有编号都在合理范围内。
【输出描述】
输出一行。如果所有同学都到达,则输出 N;否则由小到大输出所有未到达的同学编号,空格分隔。
【样例输入 1】
3 3 0 2 1
【样例输出 1】
3
【样例输入 2】
3 5 0 0 0 0 0
【样例输出 2】
1 2
参考答案:对于每个输入的编号,我们将其与已到达的同学列表进行比较。如果编号不在列表中,则将其添加到未到达的同学列表中。最后,如果未到达的同学列表为空,则输出N;否则,按照从小到大的顺序输出未到达的同学编号,空格分隔。
解析:【喵呜刷题小喵解析】:
根据题目描述,我们需要找出没有到达的同学。首先,我们可以初始化一个大小为N的数组或列表,用于记录每个同学是否到达。对于每次输入的编号,我们在数组或列表中查找该编号,如果找到,表示该同学已经到达,不需要处理;如果没找到,表示该同学没有到达,我们将其添加到未到达的同学列表中。最后,我们遍历未到达的同学列表,按照从小到大的顺序输出未到达的同学编号,空格分隔。如果未到达的同学列表为空,表示所有同学都到达了,我们输出N。
对于样例输入1,我们有3位同学,共有3次报出编号。输入的编号分别为0、2、1。我们可以初始化一个大小为3的数组或列表,用于记录每个同学是否到达。对于每次输入的编号,我们在数组或列表中查找该编号,如果找到,表示该同学已经到达,不需要处理;如果没找到,表示该同学没有到达,我们将其添加到未到达的同学列表中。在本例中,编号0和2都已经在数组或列表中,编号1没有在数组或列表中,我们将其添加到未到达的同学列表中。最后,我们输出未到达的同学编号,即1号同学没有到达。
对于样例输入2,我们有3位同学,共有5次报出编号。输入的编号均为0。我们可以初始化一个大小为3的数组或列表,用于记录每个同学是否到达。对于每次输入的编号,我们在数组或列表中查找该编号,如果找到,表示该同学已经到达,我们将其在数组或列表中的对应位置标记为已到达;如果没找到,表示该同学没有到达,我们同样将其在数组或列表中的对应位置标记为已到达。在本例中,编号0已经在数组或列表中,我们将其在数组或列表中的对应位置标记为已到达。最后,我们遍历未到达的同学列表,发现所有同学都到达了,我们输出N。
27、密码合规检测
【问题描述】
1. 网站注册需要有用户名和密码,编写程序以检查用户输入密码的有效性。
2. 合法的密码只能由 a-z 之间 26 个小写字母、A-Z 之间 26 个大写字母、0-9 之间 10个数字以及!@#$四个特殊字母构成。
3. 密码最短长度:6 个字符,密码最大长度:12 个字符。
4. 大写字母、小写字母和数字必须有其中两种,以及至少有四个特殊字符中的一个。
【输入描述】
1. 输入以英文逗号分隔的多个字符组合作为被检测密码。输入时的逗号都作为分隔符,不被视作检验密码本身。
2. 特别提示:常规程序中,输入时好习惯是有提示。考试时由于系统限定,输入时所有 input()函数不可有提示信息。
【输出描述】
1. 逐行输出 0 个或多个合规的密码。
2. 输出顺序以输入字符串出现先后为序,即先出现则先输出。
【样例输入 1】
seHJ12!@,sjdkffH$123,sdf!@^&12 HDH,123&^YUhg@!
【样例输出 1】
seHJ12!@ sjdkffH$123
参考答案:```pythondef check_password(password):if len(password) < 6 or len(password) > 12:return Falseif not re.match(r'^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&]).6,12$', password):return Falsereturn Truedef password_check():inputs = input().split(',')valid_passwords = []for password in inputs:if check_password(password):valid_passwords.append(password)for password in valid_passwords:print(password)password_check()```
解析:【喵呜刷题小喵解析】:
本题要求编写程序以检查用户输入密码的有效性,合法的密码只能由 a-z 之间 26 个小写字母、A-Z 之间 26 个大写字母、0-9 之间 10 个数字以及!@#$ 四个特殊字母构成,密码最短长度 6 个字符,最大长度 12 个字符,大写字母、小写字母和数字必须有其中两种,以及至少有四个特殊字符中的一个。
程序可以分为两个部分:密码有效性检查函数 check_password() 和主函数 password_check()。
首先,我们定义了一个正则表达式,该正则表达式用于检查密码是否满足要求。正则表达式的含义如下:
* (?=.*[a-z]):密码中必须包含至少一个小写字母。
* (?=.*[A-Z]):密码中必须包含至少一个大写字母。
* (?=.*\d):密码中必须包含至少一个数字。
* (?=.*[!@#$%^&]):密码中必须包含至少一个特殊字符!@#$。
然后,我们定义了一个函数 check_password(),该函数接受一个密码作为输入,并返回一个布尔值,表示该密码是否有效。如果密码的长度不在 6 到 12 之间,或者密码不满足上述正则表达式的要求,则返回 False,否则返回 True。
最后,我们定义了主函数 password_check(),该函数接受用户输入的多个密码,并逐个检查每个密码的有效性。如果密码有效,则将其添加到 valid_passwords 列表中。最后,我们遍历 valid_passwords 列表,并逐行输出每个有效的密码。
在主函数中,我们使用了 input() 函数来获取用户输入的多个密码,并使用 split() 方法将输入字符串以逗号分隔,得到一个密码列表。然后,我们遍历该列表,并使用 check_password() 函数逐个检查每个密码的有效性。最后,我们使用一个循环逐行输出有效的密码。
注意,本题中要求输出顺序以输入字符串出现先后为序,即先出现则先输出,因此我们在遍历密码列表时,直接按照列表的顺序输出即可。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!