一、单选题
1、计算机中,一个汉字需占用 2 个字节来记录,请问 2 个字节等于多少个二进制位?
A 4
B 8
C 16
D 32
解析:【喵呜刷题小喵解析】一个字节等于8个二进制位,所以2个字节等于2乘以8等于16个二进制位。因此,正确答案是C选项,即16个二进制位。
2、电子邮件地址中,作为区分用户名与电脑所在网络位置的符号是?
A !
B @
C #
D 空格
解析:【喵呜刷题小喵解析】:在电子邮件地址中,用户名和电脑所在网络位置之间的符号是"@"。这是电子邮件地址的标准格式,通常包括用户名和服务器地址两部分,由"@"符号进行区分。因此,选项B"@"是正确答案。其他选项"!"、"#"和"空格"都不是电子邮件地址中区分用户名和电脑所在网络位置的符号。
3、关于 Python 的数据类型,下列选项描述错误的是?( )
A 10.0 是一个浮点数
B 字符串可以保存在变量中,也可以单独存在
C int('1.0')返回的结果是整数
D 布尔类型的值只有 True 和 False
解析:【喵呜刷题小喵解析】:在Python中,`int('1.0')`返回的结果是一个浮点数,而不是整数。因此,选项C的描述是错误的。其他选项都是正确的:10.0是一个浮点数,字符串可以保存在变量中,也可以单独存在,布尔类型的值只有True和False。
4、下列选项的输出结果为 True 的是?( )
A 2>0 and 3<0 or 3<0
B 2>0 or 3<0 and 3<0
C not ('1' == 1) and 1 != 1.0 or '2' == '2.0'
D ('test' == 'Test') or 1 != 1.0 and 2 == 2.0
解析:【喵呜刷题小喵解析】:
A选项:2>0 and 3<0 or 3<0
* 2>0 为真
* 3<0 为假
* 2>0 and 3<0 为假
* 3<0 为假
* 假 or 假 = 假
B选项:2>0 or 3<0 and 3<0
* 2>0 为真
* 3<0 为假
* 3<0 and 3<0 为假
* 真 or 假 = 真
C选项:not ('1' == 1) and 1 != 1.0 or '2' == '2.0'
* '1' == 1 为假
* not ('1' == 1) 为真
* 1 != 1.0 为假
* 真 and 假 = 假
* '2' == '2.0' 为真
* 假 or 真 = 真
D选项:('test' == 'Test') or 1 != 1.0 and 2 == 2.0
* 'test' == 'Test' 为假
* 1 != 1.0 为假
* 2 == 2.0 为真
* 假 or 假 and 真 = 假
因此,只有B选项的输出结果为True。
5、下列代码执行完毕后,输出的结果是?( )
nums = [3, 1, 2, 4, 0]
nums.insert(1, 0)
nums.pop()
nums.append(1)
nums.remove(2)
print(nums)
A [0, 3, 1, 4, 1]
B [0, 1, 2, 4, 1]
C [3, 0, 1, 4, 1]
D [3, 0, 2, 4, 1]
解析:【喵呜刷题小喵解析】:首先,初始列表为`[3, 1, 2, 4, 0]`。
1. `nums.insert(1, 0)`:在索引1的位置插入0,列表变为`[3, 0, 1, 2, 4, 0]`。
2. `nums.pop()`:移除并返回列表的最后一个元素,此时列表变为`[3, 0, 1, 2, 4]`。
3. `nums.append(1)`:在列表末尾添加元素1,列表变为`[3, 0, 1, 2, 4, 1]`。
4. `nums.remove(2)`:移除值为2的元素,列表变为`[3, 0, 1, 4, 1]`。
最后,`print(nums)`输出`[3, 0, 1, 4, 1]`。因此,正确答案是C。
6、请问执行完以下代码后,输出结果为?
ls = [9, 8, 7, [6, 5, [4, 3, 2], 1], 0]
print(ls[-2][-2][1: -1])
A 3
B [3]
C [3, 2]
D []
解析:【喵呜刷题小喵解析】:首先,我们需要理解列表的索引和切片操作。列表的索引是从0开始的,而切片操作可以让我们选择列表的一部分。
给定的列表是:
ls = [9, 8, 7, [6, 5, [4, 3, 2], 1], 0]
ls[-2] 指的是列表ls中倒数第二个元素,也就是 [6, 5, [4, 3, 2], 1]。
然后,ls[-2][-2] 指的是 [6, 5, [4, 3, 2], 1] 中倒数第二个元素,也就是 [4, 3, 2]。
最后,ls[-2][-2][1: -1] 指的是 [4, 3, 2] 中从索引1到索引-1的元素,也就是 [3, 2]。
所以,执行完这段代码后,输出结果为 [3, 2]。
7、请问执行完以下代码后,输出结果为?
tot = 0
for n in range(3, 66 + 1):
if n % 2 == 0:
continue
if n % 10 == 9:
break
tot += n
print(tot)
A 18
B 33
C 2208
D 15
解析:【喵呜刷题小喵解析】:首先,我们分析代码的执行过程。代码从3开始,到66结束,进行循环。在循环中,如果n是偶数,则跳过此次循环,继续下一次循环。如果n除以10的余数为9,则跳出循环。在跳出循环之前,将n加到tot上。
代码执行过程如下:
1. 当n=3时,n是奇数,所以执行tot += n,此时tot=3。
2. 当n=4时,n是偶数,所以跳过此次循环。
3. 当n=5时,n是奇数,所以执行tot += n,此时tot=8。
4. 当n=6时,n是偶数,所以跳过此次循环。
5. 当n=7时,n是奇数,所以执行tot += n,此时tot=15。
6. 当n=8时,n是偶数,所以跳过此次循环。
7. 当n=9时,n除以10的余数为9,所以跳出循环。
因此,循环在n=9时结束,此时tot=15。所以,输出结果为15,对应选项B。
8、请问执行完以下代码后,输出结果为?( )
def is_lucky(num):
if num % 6 == 0:
return True
while num > 0:
if num % 10 == 6 or num % 10 == 8:
return True
num /= 10
return False
ls = [13, 666, 888, 32, 332, 987, 555, 345, 876]
cnt = 0
for n in ls:
if is_lucky(n):
cnt += 1
print(cnt)
A 3
B 4
C 5
D 6
解析:【喵呜刷题小喵解析】:根据题目中的代码,首先定义了一个函数`is_lucky(num)`,该函数检查数字是否满足以下条件之一:
1. 能被6整除
2. 最后一个数字是6或8
然后,代码创建了一个列表`ls`,并初始化了一个计数器`cnt`为0。接着,代码遍历列表`ls`中的每个数字,如果这个数字是“幸运数”(即满足上述条件之一),则计数器`cnt`加1。最后,代码打印计数器的值。
在这个列表中,满足条件的数字有:666,888,332,876。因此,计数器`cnt`的值为4,输出的结果也应该是4。
二、实操题
9、给定一个 5 * 5 的二维列表 ls:
ls = [[1, 2, 2, 1, 2],
[5, 6, 7, 8, 3],
[9, 3, 0, 5, 3],
[7, 2, 1, 4, 6],
[3, 0, 8, 2, 5]]
输入两个正整数 m、n(1<=m<=5,1<=n<=5),将第 n 行和第 m 行交换,输出交换后的列表。
【输入示例】
5
4
【输出示例】
[[1, 2, 2, 1, 2], [5, 6, 7, 8, 3], [9, 3, 0, 5, 3], [3, 0, 8, 2, 5], [7, 2, 1, 4, 6]]
参考答案:br />根据题目要求,我们需要将第4行和第5行进行交换,输出交换后的列表。所以,输出结果为:[[1, 2, 2, 1, 2], [5, 6, 7, 8, 3], [9, 3, 0, 5, 3], [3, 0, 8, 2, 5], [7, 2, 1, 4, 6]]
解析:【喵呜刷题小喵解析】
首先,我们需要明确题目要求。题目给出了一个5*5的二维列表ls,并给出了两个正整数m和n,要求我们将第n行和第m行进行交换。
根据题目示例,m=5,n=4,所以我们需要将第4行和第5行进行交换。
在Python中,我们可以通过切片来实现列表的交换。例如,假设我们要将列表ls的第4行和第5行进行交换,可以使用以下代码:
```python
ls[4], ls[3] = ls[3], ls[4]
```
在这个例子中,ls[4]和ls[3]分别表示第5行和第4行,通过将它们进行交换,就可以实现行的交换。
最后,将交换后的列表输出即可。
10、每个字母都有自己的积分:它在字母表是第几个它的积分就是几,比如:a 的积分是1,z 的积分是 26。一个字符串的积分为所有字符的积分之和。我们知道中国人觉得特别喜欢 6 和 9,觉得 6 是一个幸运数字,而 9 则是一个霸气的数字,毕竟九五至尊嘛~若一个字符串的积分既是 6 的倍数,又是 9 的倍数,则此字符串则为吉利又霸气的字符串。现在给你一个英文名,请你来判断这个英文名是不是吉利又霸气,如果是的,请输出'Yes',否则,请输出'No'。
【输入格式】
一行,一个字符串,表示要判断的英文名,均为小写字母。
【输出格式】
一行,表示判断结果,如果输入的英文名是吉利且霸气的,则输出'Yes',否则,输出'No'。
【输入样例 1】
mick
【输出样例 1】
Yes
【输入样例 2】
allen
【输出样例 2】
No
参考答案:请输入要判断的英文名:输入样例:mick输出样例:Yes
解析:【喵呜刷题小喵解析】:
根据题目描述,我们需要判断输入的英文名是否满足既是6的倍数又是9的倍数的条件。首先,我们需要将每个字母按照其在字母表中的位置(即积分)进行累加,然后判断累加结果是否是6和9的公倍数。
以输入样例 "mick" 为例,其积分分别为:
m: 13
i: 9
c: 3
k: 11
累加得到积分总和为 13 + 9 + 3 + 11 = 36,36既是6的倍数又是9的倍数,因此输出 "Yes"。
对于输入样例 "allen",其积分分别为:
a: 1
l: 12
e: 5
n: 14
累加得到积分总和为 1 + 12 + 5 + 14 = 32,32既不是6的倍数也不是9的倍数,因此输出 "No"。
11、编写一段程序,键盘输入任意的十进制正整数,程序输出与其对应的二进制数。
【输入示例 1】
7
【输出示例 1】
111
【输入示例 2】
10
【输出示例 2】
1010
参考答案:br />以下是Python语言编写的程序,可以实现将输入的十进制正整数转换为二进制数并输出:```pythonnum = int(input("请输入一个十进制正整数:"))binary_num = bin(num)[2:]print("对应的二进制数为:", binary_num)```
解析:【喵呜刷题小喵解析】
该程序首先通过`input()`函数获取用户输入的十进制正整数,并将其转换为整数类型。然后使用`bin()`函数将整数转换为二进制数,并去掉前面的`0b`前缀,得到真正的二进制数。最后使用`print()`函数输出二进制数。
程序的核心在于`bin()`函数的使用,该函数可以将整数转换为二进制数,并返回一个字符串,形如`0b111`或`0b1010`,其中`0b`是前缀,表示该数是二进制数。在Python中,可以通过切片操作去掉前缀,得到真正的二进制数。例如,`bin(num)[2:]`表示去掉字符串`bin(num)`的前两个字符,即去掉`0b`前缀。
12、使用 Python 编写一个算法来确定一个数字是否“快乐”。快乐的数字按照如下方式确定:从一个正整数开始,用其每位数的平方之和取代该数,并重复这个过程,直到最后数字要么收敛等于 1 且一直等于 1,要么将无休止的循环下去且最终不会收敛等于 1。能够最终收敛等于 1 的数就是快乐的数字。
例如,数字 19 就是一个快乐的数字,计算过程如下:
【输入示例 1】
19
【输出示例 1】
Yes
【输入示例 2】
2
【输出示例 2】
No
参考答案:```pythondef is_happy(n):seen = set()while n != 1 and n not in seen:seen.add(n)n = sum([int(d) ** 2 for d in str(n)])return n == 1```
解析:【喵呜刷题小喵解析】:
首先,我们定义一个函数`is_happy`,它接受一个参数`n`,表示要判断的数字。
在函数内部,我们初始化一个集合`seen`,用于存储已经计算过的数字,防止陷入循环。
然后,我们进入一个循环,条件是`n`不等于1且`n`还没有在`seen`集合中出现过。在每次循环中,我们先将`n`添加到`seen`集合中,然后计算`n`的每位数的平方之和,将结果赋值给`n`。
循环结束后,我们检查`n`是否等于1。如果等于1,说明`n`是一个快乐的数字,返回True;否则,返回False。
这样,我们就可以通过调用`is_happy`函数来判断一个数字是否是快乐的数字了。例如,`is_happy(19)`将返回True,表示19是一个快乐的数字;`is_happy(2)`将返回False,表示2不是一个快乐的数字。
13、小 Y 特别喜欢环湖赛跑,因为这样空气非常好,跑起来特别有动力。正值一年一度的环湖跑王者争霸赛开始了,小 Y 就立刻报名了。比赛主办方在周长为 8000 米的湖周围一圈设置了 n 个夺分点,逆时针编号为 1~n,每个夺分点的积分不一定相同,每个积分点的具体位置和积分数量由主办方在比赛开始前公布。比赛规定:参赛者可以选择从赛道的任意一点出发,只能逆时针跑,需要在 5 分钟内尽可能多拿分,只要到达积分点即可得到该积分点的积分,不同人到达同一积分点均能得到积分,互不影响。经过小 Y 自己赛前的反复测试发现,平均下来,自己比赛时的速度为 3.5 米每秒。请问小 Y 以这个速度最多能拿多少分呢?最多能拿的分和最少能拿的分差多少呢?
【输入格式】
2n + 1 行,
第一行,一个整数 n,表示积分点的个数。
接下来 n 行,每行一个数,表示积分点的距离,这个距离是相对于 1 号积分点的距离。距离按照积分点的编号从 1 到 n 进行输入,由小到大,保证一圈的距离足够大,无法跑完一整圈;
再接下来的 n 行,每行一个数,表示每个积分点的积分,也是按照积分点的编号顺序进行输入,保证积分总和不超过 1000000000。
【输出格式】
两行,
第一行为小 Y 能得到的最多积分;
第二行为小 Y 能拿到最多积分与最少积分的差值。
【输入样例】
5
0
123
555
6111
7521
23
54
21
76
32
【输出样例】
130
109
参考答案:br />最多积分:130最多积分与最少积分差:109
解析:【喵呜刷题小喵解析】
这个问题是关于小Y参加环湖跑王者争霸赛,需要尽可能多地获取积分。比赛规则是参赛者可以从赛道的任意一点出发,逆时针跑,只要到达积分点即可得到该积分点的积分。小Y的平均速度是3.5米每秒。
首先,我们需要确定小Y的起始位置。为了得到最多的积分,小Y应该选择距离最短的积分点作为起始点,这样他可以在最短的时间内到达更多的积分点。
接下来,我们需要计算小Y在5分钟内能跑多远。由于小Y的速度是3.5米每秒,5分钟是300秒,所以小Y能跑的距离是3.5 * 300 = 1050米。
然后,我们需要找到小Y能到达的所有积分点。这些积分点应该是从小Y的起始积分点开始,按照逆时针方向,直到小Y能跑的距离内的所有积分点。
最后,我们需要计算小Y能得到的最多积分。为了得到最多的积分,小Y应该尽可能多地到达积分点,而且应该按照积分点的积分从高到低进行选择。所以,我们可以按照积分点的积分从高到低进行排序,然后计算小Y能到达的积分点的总积分。
对于最多积分与最少积分的差值,我们需要考虑小Y可能到达的所有积分点,然后计算所有可能的积分组合,找到积分最多的组合和积分最少的组合,并计算它们的差值。
由于这个问题的规模较大,计算过程可能会比较复杂,所以我们可以使用动态规划等方法来简化计算过程。
在给定的输入样例中,积分点的个数n为5,积分点的距离和积分分别为:0, 123, 555, 6111, 7521和23, 54, 21, 76, 32。根据这些输入,我们可以计算出小Y能得到的最多积分和最多积分与最少积分的差值。
在给定的输出样例中,最多积分为130,最多积分与最少积分的差值为109。
14、任何一个大于 7 的奇数,都可以表示成 3 个奇质数之和,这就是著名的“奇数哥德巴赫猜想”。现输入一个正整数,请编程验证哥德巴赫猜想是否成立。
如果成立,按照从小到大的顺序输出 3 个质数,中间用空格隔开。有多组答案时,按照第一个数字从小到大的顺序分行输出。
如果不成立或输入的正整数不符合条件(要求是大于 7 的奇数),直接输出 No。
【输入示例 1】
11
【输出示例 1】
3 3 5
【输入示例 2】
27
【输出示例 2】
3 5 19
3 7 17
3 11 13
5 5 17
5 11 11
7 7 13
【输入示例 3】
6
【输出示例 3】
No
参考答案:对于输入的正整数,我们需要编写程序来验证哥德巴赫猜想是否成立。如果成立,按照从小到大的顺序输出3个质数,中间用空格隔开。有多组答案时,按照第一个数字从小到大的顺序分行输出。如果不成立或输入的正整数不符合条件(要求是大于7的奇数),直接输出No。
解析:【喵呜刷题小喵解析】:
根据题目要求,我们需要编写一个程序来验证哥德巴赫猜想。哥德巴赫猜想是指任何一个大于7的奇数都可以表示成3个奇质数之和。因此,我们需要编写一个程序来检查输入的正整数是否满足这个条件。
首先,我们需要判断输入的正整数是否大于7且为奇数。如果不是,则直接输出No。
如果输入的正整数符合条件,我们需要找到3个奇质数,使得它们的和等于输入的正整数。我们可以使用穷举法来找到这样的3个奇质数。具体来说,我们可以从最小的奇质数2开始,逐渐增大,找到3个奇质数,使得它们的和等于输入的正整数。在寻找过程中,我们可以使用质数筛算法来快速判断一个数是否为质数,从而提高程序的效率。
在找到这样的3个奇质数后,我们需要按照从小到大的顺序输出它们,中间用空格隔开。如果有多组答案,我们需要按照第一个数字从小到大的顺序分行输出。
需要注意的是,哥德巴赫猜想至今未被证明,因此我们的程序只能验证输入的正整数是否满足哥德巴赫猜想的条件,而不能证明哥德巴赫猜想本身。
15、用数字 1-9,组成一个三位数减三位数还得三位数的式子,并且要求每个数字不能重复,即,可以使形如 ABC - DEF = GHI 的等式成立。如 981 - 746 = 235 就是一组满足条件的三位数,981 - 235 = 746 也是一组新的满足条件的三位数。一共有多少组满足条件的三位数?输出你的结果。
【输出示例】
100 (100 并非最后答案)
参考答案:120
解析:【喵呜刷题小喵解析】:本题要求用数字1-9组成一个三位数减三位数还得三位数的式子,且每个数字不能重复。根据题目描述,我们可以列举所有可能的三位数,并计算满足条件的式子数量。
首先,列举所有可能的三位数。由于数字不能重复,每个位置的数字可以从1-9中选择,因此共有$A_{9}^{3}$种可能的三位数。
然后,对于每一对三位数,检查它们是否满足条件。设两个三位数分别为ABC和DEF,它们的差为GHI。我们需要检查以下三个条件:
1. ABC和DEF不能相等,即ABC ≠ DEF。
2. GHI必须是一个三位数,即100 ≤ GHI ≤ 999。
3. 数字1-9在ABC、DEF和GHI中都不能重复。
对于第一个条件,我们可以通过比较ABC和DEF是否相等来检查。
对于第二个条件,我们可以通过检查GHI的每一位是否都在1-9的范围内来检查。
对于第三个条件,我们可以检查数字1-9在ABC、DEF和GHI中的使用情况。
最后,我们将所有满足条件的式子数量相加,得到最终答案。
由于列举所有可能的三位数和检查条件的过程比较复杂,我们可以使用编程来解决问题。经过计算,一共有120组满足条件的三位数。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!