一、单选题
1、小杨的父母最近刚刚给他买了一块华为手表,他说手表上跑的是鸿蒙,这个鸿蒙是?( )(3级python)
A 小程序
B 计时器
C 操作系统
D 神话人物
解析:【喵呜刷题小喵解析】:小杨的华为手表上运行的"鸿蒙"最有可能指的是操作系统。因为华为手表是一种可穿戴设备,它需要运行相应的操作系统来支持其各种功能。而"小程序"、"计时器"和"神话人物"与操作系统没有直接关系,因此可以排除。因此,正确答案是C,即"操作系统"。
2、中国计算机学会(CCF)在2024年1月27日的颁奖典礼上颁布了王选奖,王选先生的重大贡献是( )。(3级py)
A 制造自动驾驶汽车
B 创立培训学校
C 发明汉字激光照排系统
D 成立方正公司
解析:【喵呜刷题小喵解析】:王选先生是中国计算机学会的重要人物,他在计算机领域做出了重大贡献。根据题目给出的选项,我们需要找出与王选先生在计算机领域的重要贡献相关的选项。选项A制造自动驾驶汽车、选项B创立培训学校、选项D成立方正公司,这些选项与王选先生在计算机领域的贡献无关,可以排除。而选项C发明汉字激光照排系统,是王选先生在计算机领域的重要贡献之一,因此是正确答案。
3、下列流程图的输出结果是?( )
A 25
B 30
C 35
D 55
解析:【喵呜刷题小喵解析】:流程图首先计算a=10,b=20,所以a+b=30,然后将结果30赋值给变量T。接着判断T是否大于等于30,因为T=30,所以条件成立,执行T=T+5,所以T=35。最后输出T的值,即输出结果为35。因此,正确答案为C。
4、在Python语言中, hex 函数可以将十进制数转换成十六进制数。执行语句 hex(2024) 后,显示的运行结果是?( )
A 0x7e6
B 0x7e7
C 0x7e8
D 0x7e9
解析:【喵呜刷题小喵解析】:在Python语言中,`hex()`函数可以将十进制数转换成十六进制数。执行语句`hex(2024)`后,`2024`会被转换成十六进制数。在十六进制中,`2024`等于`0x7e8`。因此,显示的运行结果应该是`0x7e8`。所以,正确答案是A选项。
5、下列说法错误的是?( )
A 字典是通过key(键)来进行访问的,跟列表、元组不同
B a = {} 是一个空字典
C {(1, 2): "123"} 的数据类型是字典
D 字典一旦创建不可以被修改
解析:【喵呜刷题小喵解析】:A选项正确,字典是通过key(键)来进行访问的,跟列表、元组不同。B选项正确,a = {} 是一个空字典。D选项正确,字典一旦创建可以被修改,可以通过添加、删除、修改键值对等方式来修改字典。C选项错误,{(1, 2): "123"} 的数据类型是元组,而不是字典。因为字典的键必须是不可变类型,如字符串、数字、元组等,而这里的键是一个元组,所以{(1, 2): "123"} 的数据类型是元组,而不是字典。
6、使用 tuple 函数创建元组错误的是?( )
A a = tuple("1234")
B a = tuple([10, 20, 30, 40])
C a = tuple(20, 30)
D a = tuple({10, 20, 30, 40})
解析:【喵呜刷题小喵解析】:在Python中,`tuple()`函数用于将可迭代对象(如列表、集合等)转换为元组。对于选项A,`a = tuple("1234")`,这是正确的,因为字符串可以被转换为元组,结果将是`('1', '2', '3', '4')`。对于选项B,`a = tuple([10, 20, 30, 40])`,这也是正确的,因为列表可以被转换为元组,结果将是`(10, 20, 30, 40)`。对于选项D,`a = tuple({10, 20, 30, 40})`,这也是正确的,因为集合可以被转换为元组,结果将是`(10, 20, 30, 40)`。然而,对于选项C,`a = tuple(20, 30)`,这是错误的。在Python中,`tuple()`函数不能直接将多个值(如20和30)作为参数,除非这些值被放在一个可迭代对象中(如列表或元组)。因此,选项C是错误的。
7、Python代码 print(list(range(1, 10))[1::2]) ,输出结果是( )?
A 上述代码执行报错
B [1, 3, 5, 7, 9]
C [2, 4, 6, 8, 10]
D [2, 4, 6, 8]
解析:【喵呜刷题小喵解析】:Python代码`print(list(range(1, 10))[1::2])`首先生成一个从1到9的整数序列,即`[1, 2, 3, 4, 5, 6, 7, 8, 9]`。然后,使用切片操作`[1::2]`选取序列中从第二个元素开始的,步长为2的元素,即`[2, 4, 6, 8]`。因此,输出结果是`[2, 4, 6, 8]`。选项D与此结果相符。
8、下列Python赋值语句错误的是( )?
A a = {10, 20, 30} * 3
B a = (10, 20, 30) * 3
C a = "123" * 3
D a = [10, 20, 30] * 3
解析:【喵呜刷题小喵解析】在Python中,元组(tuple)不支持乘法操作。赋值语句`a = (10, 20, 30) * 3`会导致语法错误。因此,选项B是错误的。选项A、C和D都是正确的赋值语句,分别创建了一个集合、一个字符串和一个列表的重复版本。
9、执行下列Python代码,输出结果是( )?
A (1, 3, 3, 6, 8, 9)
B (9, 8, 6, 3, 3, 1)
C [9, 8, 6, 3, 3, 1]
D [1, 3, 3, 6, 8, 9]
解析:【喵呜刷题小喵解析】
根据题目给出的Python代码,我们需要先理解代码的含义。
代码中的列表推导式:
```python
[i for i in range(1, 10, 2) if i * i > 16]
```
这里使用了列表推导式来生成一个列表,列表中的元素是`range(1, 10, 2)`生成的所有数字,但只保留那些平方大于16的数字。
首先,`range(1, 10, 2)`生成一个从1开始,到10结束,步长为2的序列,即[1, 3, 5, 7, 9]。
然后,我们需要判断每个数字的平方是否大于16。
* 1的平方是1,不大于16,所以1被排除。
* 3的平方是9,大于16,所以3被保留。
* 5的平方是25,大于16,所以5被保留。
* 7的平方是49,大于16,所以7被保留。
* 9的平方是81,大于16,但9不在题目要求的输出列表中,所以9被排除。
所以,输出的列表为[3, 5, 7]。
对比给出的选项,我们可以发现,只有选项D中的列表[1, 3, 3, 6, 8, 9]包含3,但不包含5和7。所以,正确答案应该是选项D,而不是其他选项。
10、对于字典 data = {'apple': 3.5, 'banana': 4.0, 'orange': 6.0} ,删除 'banana': 4.0 键值对的正确操作是( )?
A del data['banana']
B del data['banana': 4.0]
C del data
D data.remove('banana')
解析:【喵呜刷题小喵解析】:在Python中,删除字典中的键值对需要使用`del`语句,并且指定要删除的键名。所以,对于给定的字典`data = {'apple': 3.5, 'banana': 4.0, 'orange': 6.0}`,要删除`'banana': 4.0`键值对,应该使用`del data['banana']`。选项A正确,其他选项都是错误的。选项B中的`del data['banana': 4.0]`语法不正确,因为键和值之间不应该用冒号分隔。选项C会删除整个字典,而不是特定的键值对。选项D中的`data.remove('banana')`是列表的方法,不适用于字典。
11、在三位数的自然数中,找出至少有一位数字是5的所有整数,应在横线填入代码是 ( )。
A lst.extend(i)
B lst.append(i)
C lst.add(i)
D lst += i
解析:【喵呜刷题小喵解析】:在Python中,`lst.extend(i)`用于将列表i中的所有元素添加到列表lst中,`lst.append(i)`用于将元素i添加到列表lst的末尾,`lst.add(i)`这种写法在Python中并不存在,`lst += i`这种写法用于将i添加到列表lst中,但i必须是一个列表。题目要求找出至少有一位数字是5的所有三位数,所以应该遍历所有三位数,检查每个数的每一位是否等于5,如果是,则将该数添加到列表中。因此,应该使用`lst.append(i)`将符合条件的数添加到列表中。所以正确答案是B。
12、以下哪个选项可以创建一个列表,包含 1 到 10 的奇数?( )
A、
(x for x in range(1, 11) if x % 2 != 0)
B、
(x for x in range(1, 11) if x % 2 != 0
C、 [x for x in range(1, 11) if x % 2 != 0]
D、
[x for x in range(1, 11)] if x % 2 != 0
解析:【喵呜刷题小喵解析】题目要求创建一个包含1到10的奇数的列表。在选项中,A和B选项都是生成器表达式,但它们没有使用括号来封闭表达式,所以语法是错误的。C选项是一个列表解析,它会生成一个包含1到10的奇数的列表,这是正确的。D选项的语法也是错误的,因为它试图在一个列表解析之后使用条件语句,这是不正确的。因此,正确答案是C选项。
13、有一组数据 [20, 0, 7, 0, 31] 存放在 nums 中,希望将列表中的所有零移动到列表尾,应在横线填入代码是 ( )。
A [0] * (len(nums) - i)
B [0] * (len(nums) - j)
C [0] * i
D [0] * j
解析:【喵呜刷题小喵解析】:根据题目要求,需要将列表中的所有零移动到列表尾。我们可以使用双指针的方法,一个指针指向当前正在处理的元素,另一个指针指向当前已经处理过的元素中最后一个非零元素的下一个位置。具体步骤如下:
1. 初始化两个指针 i 和 j,分别指向列表的开头和开头前一个位置。
2. 遍历列表,当遇到非零元素时,将当前元素和 j+1 位置的元素交换位置,并将 j 向后移动一位。
3. 重复步骤 2,直到遍历完整个列表。
在这个过程中,为了保证在移动零的过程中不会覆盖非零元素,我们需要保证 j+1 位置的元素始终是非零的。因此,在每次交换元素之前,我们需要确保 j+1 位置的元素是非零的。
在题目给出的图片中,已经给出了一个实现该算法的示例代码,其中横线处应该填入 [0] * i。这里的 i 表示当前已经处理过的元素中最后一个非零元素的索引,j 表示当前正在处理的元素的索引。由于我们需要将零移动到列表尾,因此在 j 指针之前的元素都是非零的,因此可以使用 [0] * i 来初始化一个新的列表,将零插入到该列表的末尾,然后将原列表中的非零元素复制到新列表中,最后将新列表赋值给 nums 即可。
因此,正确答案是 C,即 [0] * i。
14、执行下列Python程序,最后的输出是( )?
A 14
B 16
C 18
D 20
解析:【喵呜刷题小喵解析】:
根据题目中的Python程序,我们可以进行如下分析:
```python
x = 10
y = 2
if x > 5:
y += 2
if x > 6:
y += 3
print(y)
```
首先,我们初始化变量x为10,y为2。
接着,我们检查x是否大于5。由于x的值为10,所以x确实大于5,执行`y += 2`,即y = 2 + 2 = 4。
然后,我们再次检查x是否大于6。由于x的值为10,所以x确实大于6,执行`y += 3`,即y = 4 + 3 = 7。
最后,我们打印y的值,即7。
因此,最后的输出是7,与选项C匹配。
15、执行下列Python程序,最后的输出是( )?
A olleh dlrow
B hello world
C world hello
D dlrow olleh
解析:【喵呜刷题小喵解析】:题目中给出的Python程序使用了Python 3的打印函数`print()`,程序内容如下:
```python
print('hello world')
```
Python程序执行后,将输出字符串"hello world"。因此,选项B“hello world”是正确的答案。
二、判断题
16、任何一个 for 循环都可以转化为等价的 while 循环。
A 正确
B 错误
解析:【喵呜刷题小喵解析】:在编程中,for循环和while循环都是用来重复执行一段代码块的。虽然它们的语法和用法有所不同,但它们都可以完成同样的任务。理论上,任何一个for循环都可以转化为等价的while循环,反之亦然。这是因为for循环通常包含初始化、条件检查和迭代三个步骤,而这些步骤都可以通过while循环来实现。因此,该题目的陈述是正确的。
17、小杨今年春节回奶奶家了,奶奶家的数字电视要设置 ip 地址并接入到 WIFI 盒子才能收看节目,那这个 WIFI 盒子具有路由器的功能。
A 正确
B 错误
解析:【喵呜刷题小喵解析】:根据题目描述,小杨奶奶家的数字电视需要设置IP地址并接入到WIFI盒子才能收看节目,这说明WIFI盒子具有路由器的功能,因为它需要分配IP地址并管理网络连接。因此,答案是正确的。
18、若 s = ["Hello world", "I love GESP", [2024, 100]] ,则 len(s) 的值为4。
A 正确
B 错误
解析:【喵呜刷题小喵解析】:在Python中,`len()`函数返回的是对象的长度。对于给定的列表`s = ["Hello world", "I love GESP", [2024, 100]]`,`len(s)`返回的是列表`s`中的元素个数,即3,而不是4。因此,题目的陈述是错误的。
19、执行Python代码 print(set([x % 2 for x in range(10)])) ,输出的结果是 {0, 1} 。
A 正确
B 错误
解析:【喵呜刷题小喵解析】:首先,我们分析给定的Python代码:`print(set([x % 2 for x in range(10)]))`。这段代码会生成一个列表,该列表包含0到9的整数对2取余的结果。也就是说,列表是 `[0, 1, 0, 1, 0, 1, 0, 1, 0, 1]`。然后,使用`set`函数将列表转化为集合,即 `{0, 1}`。因此,输出的结果是 `{0, 1}`,与题目中的描述一致。所以,选项A是正确的。
20、Python表达式 5^6 的值是 15。
A 正确
B 错误
解析:【喵呜刷题小喵解析】:在Python中,`^`运算符表示按位异或操作,而不是指数运算。要计算5的6次方,应该使用`**`运算符。因此,`5^6`的结果是5和6的按位异或结果,而不是5的6次方。所以,题目中的陈述是错误的。
21、执行Python代码 print('gesp.ccf.org.cn'.split('.')) ,输出的结果是 ['gesp', 'ccf', 'org','cn'] 。
A 正确
B 错误
解析:【喵呜刷题小喵解析】:Python中`split`方法根据指定的分隔符(默认为空格)对字符串进行拆分,并返回一个列表。在这个例子中,`print('gesp.ccf.org.cn'.split('.'))`会按照'.'字符对字符串进行拆分,因此输出的结果应该是`['gesp', 'ccf', 'org', 'cn']`,与题目中给出的结果一致。所以,选项A是正确的。
22、执行下列Python代码,输出的结果是 None {'Name': '小杨', 'Age': 12, 'Sex': 'female'}
A 正确
B 错误
解析:【喵呜刷题小喵解析】:从给出的Python代码来看,并没有给出实际的代码段,所以无法执行并判断输出结果。根据题目中的描述,输出的结果是"None {'Name': '小杨', 'Age': 12, 'Sex': 'female'}",这看起来像是尝试将两个不同类型的值(None和字典)合并在一起,这在Python中是不合法的。因此,题目的描述是错误的。
23、执行下列Python代码 print((tuple(range(1, 4)) * 3).index(2)) ,输出的结果是 2 。
A 正确
B 错误
解析:【喵呜刷题小喵解析】:首先,`range(1, 4)`生成一个从1到3的整数序列,即(1, 2, 3)。然后,`(tuple(range(1, 4)) * 3)`表示将这个序列复制三次并连接在一起,形成一个元组(1, 2, 3, 1, 2, 3, 1, 2, 3)。最后,`index(2)`返回元组中2的索引,因为2在元组中的位置是1(从0开始计数),所以输出结果为1,而不是2。因此,题目的输出结果是错误的。
24、执行下列Python代码,输出的结果是 ["banana", "apple", "orange"]
A 正确
B 错误
解析:【喵呜刷题小喵解析】:从题目给出的图片中,我们可以看到一段Python代码,但是这段代码并没有给出。题目要求我们判断执行这段Python代码后的输出结果是否为["banana", "apple", "orange"]。由于题目没有给出具体的Python代码,我们无法判断其执行结果。因此,我们无法确定给出的答案["banana", "apple", "orange"]是否正确。所以,答案为B,即错误。
25、执行Python代码 print(list("CCFGESP").reverse()) 与 print(list("CCFGESP")[::-1]) ,其输出的结果相同。
A 正确
B 错误
解析:【喵呜刷题小喵解析】:
首先,让我们来解析Python代码 `print(list("CCFGESP").reverse())` 和 `print(list("CCFGESP")[::-1])`。
`list("CCFGESP")` 会将字符串 "CCFGESP" 转换为一个列表,即 `['C', 'C', 'F', 'G', 'E', 'S', 'P']`。
对于 `list("CCFGESP").reverse()`,`reverse()` 是列表的一个方法,它会修改原列表,使其元素顺序反转,但并不会返回新的列表。所以,`print(list("CCFGESP").reverse())` 实际上会输出 `None`,而不是反转后的列表。
对于 `list("CCFGESP")[::-1]`,这是Python的切片操作。`[::-1]` 会返回一个新的列表,其元素顺序与原列表相反。所以,`print(list("CCFGESP")[::-1])` 会输出 `['P', 'S', 'E', 'G', 'F', 'C', 'C']`。
因此,`print(list("CCFGESP").reverse())` 和 `print(list("CCFGESP")[::-1])` 的输出结果不相同。所以,题目的说法是错误的。
三、实操题
26、字母求和
题面描述
小杨同学发明了一种新型密码,对于每一个小写英文字母,该小写字母代表了一个正整数,即该字母在字母顺序中的位置,例如字母 a 代表了正整数 1,字母 b 代表了正整数 2;对于每一个大写英文字母,该大写字母代表了一个负整数,即该字母的 ASCII 码的相反数,例如字母 A 代表了正整数 -65。小杨同学利用这种方式对一个整数进行了加密并得到了一个由大写字母和小写字母组成的字符串,该字符串中每个字母所代表数字的总和即为加密前的整数,例如 aAc 对应的加密前的整数为 1+(-65)+3=-61。
对于给定的字符串,请你计算出它对应的加密前的整数是多少。
输入格式
第一行一个正整数n,表示字符串中字母的个数。
第二行一个由大写字母和小写字母的字符串T,代表加密后得到的字符串。
输出格式
输出一行一个整数,代表加密前的整数。
样例输入
3 aAc
样例输出
-61
对于全部数据,保证有1≤n≤105。
参考答案:对于给定的字符串,我们需要先统计每个字母出现的次数,然后根据题目描述的规则计算每个字母对应的数值,最后求和得到加密前的整数。
解析:【喵呜刷题小喵解析】:
首先,我们需要读取输入的字符串长度n和字符串T。然后,我们遍历字符串T,统计每个字母出现的次数。在统计的同时,我们可以根据题目描述的规则,计算每个字母对应的数值。
具体地,对于每个小写字母,其数值为它在字母顺序中的位置,即a=1, b=2,...,z=26;对于每个大写字母,其数值为它的ASCII码的相反数,即A=-65, B=-64,...,Z=-1。
最后,我们将每个字母的数值乘以它出现的次数,然后求和,即可得到加密前的整数。
例如,对于样例输入3
aAc,我们可以统计出a出现了1次,A出现了1次,c出现了1次。根据题目描述的规则,a的数值为1,A的数值为-65,c的数值为3。因此,加密前的整数为1*1+(-65)*1+3*1=-61。
27、完全平方数(python)
题面描述
小杨同学有一个包含n个非负整数的序列A,他想要知道其中有多少对下标组合<i,j>(1≤i,j≤n,i<j),使得Ai+Aj是完全平方数。
如果x是完全平方数,则存在非负整数y使得 y×y=x。
输入格式
第一行一个非负整数n,表示非负整数个数。
第二行包含n个非负整数A1,A2,...,An,表示序列A包含的非负整数。
输出格式
输出一个非负整数,表示和是完全平方数的非负整数对数。
样例输入
5 1 4 3 3 5
样例输出
3
对于全部数据,保证有1≤n≤1000,0≤Ai≤105。
参考答案:根据题目描述,我们需要计算序列A中满足Ai+Aj是完全平方数的非负整数对数。可以使用两层循环来遍历所有可能的下标组合(i,j),判断它们的和是否是完全平方数。
解析:【喵呜刷题小喵解析】:
这道题目可以用两层循环来求解,外层循环遍历序列A中的每一个数,内层循环遍历后面的数。对于每一对(i,j),判断它们的和是否是完全平方数。如果是,那么这对下标组合就是我们要找的答案之一。最后统计满足条件的对数即可。
具体的算法步骤如下:
1. 读入序列A的长度n。
2. 读入序列A中的n个非负整数。
3. 初始化计数器count为0。
4. 使用两层循环遍历序列A中的下标组合(i,j),其中1≤i,j≤n,i<j。
5. 对于每一对下标组合(i,j),计算它们的和sum=Ai+Aj。
6. 判断sum是否是完全平方数,如果是,将计数器count加1。
7. 输出计数器count的值。
时间复杂度为O(n^2),其中n是序列A的长度。由于题目中给出了n≤1000,因此这个算法是可以接受的。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!