image

编辑人: 未来可期

calendar2025-06-13

message4

visits227

2024月03月Python三级实操答案及解析

一、编程题

1、整数问题

给定一个十进制整数 n,求出从 1 到 n 的所有整数中出现“1”的个数。

例如,n=2 时,1,2 出现 1 个“1”。

n=12 时,1,2,3,4,5,6,7,8,9,10,11,12,出现 5 个“1”。

现编写一个程序,实现如下功能:输入整数 n,执行程序后,输出该范围内出现“1”的个数。请完善程序。

n=int(input('请输入整数:'))

i=1

while :

    x=i

    while x>0:

        if :

            count=count+1

        x//=10

   

print(n,'范围内 1 的个数有:',count)

参考答案:```pythoncount = 0i = 1while i <= n:x = iwhile x > 0:if x % 10 == 1:count += 1x //= 10i += 1print(f'n范围内 1 的个数有:count')```

解析:【喵呜刷题小喵解析】:

这个程序的目标是计算从1到n的所有整数中,出现“1”的总个数。我们可以使用两个嵌套的循环来完成这个任务。

1. 外层循环:从1开始,递增到n,对于每一个数i,我们都执行内层循环。
2. 内层循环:从i开始,将i的每一位数字取出来,检查是否等于1,如果等于1,就将计数器count加1。

根据题目,我们可以完善程序如下:

1. 初始化计数器count为0,用于记录出现“1”的总个数。
2. 设置外层循环的条件为`i <= n`,确保循环会遍历从1到n的所有整数。
3. 在内层循环中,使用`x = i`来保存当前的整数i,然后执行循环,将i的每一位取出来。
4. 使用`x % 10`来获取i的最后一位数字,如果等于1,就将count加1。
5. 使用`x //= 10`来去掉i的最后一位数字,继续处理下一位。
6. 内层循环结束后,外层循环递增i,继续处理下一个整数。
7. 最后,输出出现“1”的总个数。

注意,题目中的程序示例中,`n=int(input('请输入整数:'))`是用来获取用户输入的整数n,这部分代码是正确的,但在示例中并没有给出完整的程序,所以我们在这里补充了完整的程序。

2、偶数排序

下列程序将数列中的偶数按从小到大顺序输出,请你补全代码。

def even(x):

return x%2==0 #自定义函数 even,判断 x 是否为偶数

c=[3,7,1,18,9,12,5,2,22,10]

n=

h=[]

for i in :

    for j in range(0,n-i-1):

        if :

            c[j],c[j+1]=

for i in range(0,n-1):

        h=filter( ,c)

ans=list(h)

print(ans)

参考答案:① c 的长度,即 n = len(c)② c,表示对 c 进行迭代③ even(c[j]) and even(c[j+1]),表示判断 c[j] 和 c[j+1] 是否都是偶数④ c[j], c[j+1],表示交换 c[j] 和 c[j+1] 的值⑤ lambda x: even(x),表示对 c 中的元素进行筛选,只保留偶数

解析:【喵呜刷题小喵解析】:

1. 首先,我们需要确定数列 c 的长度,即 n = len(c)。
2. 接下来,我们需要遍历 c 中的所有元素,并在每次遍历中对偶数进行排序。为此,我们可以使用嵌套的 for 循环,外层循环用于遍历 c,内层循环用于比较和交换相邻的元素。
3. 为了比较两个相邻的元素,我们需要使用自定义函数 even 来判断它们是否为偶数。在内层循环中,我们使用 if 语句来检查 c[j] 和 c[j+1] 是否都是偶数。
4. 如果 c[j] 和 c[j+1] 都是偶数,我们使用 c[j], c[j+1] = c[j+1], c[j] 来交换它们的值,这样 c[j] 就会成为较小的偶数。
5. 最后,我们使用 filter 函数和自定义函数 even 来筛选出 c 中的所有偶数,并将它们转换为列表 ans。最后,我们打印出 ans。

注意,题目中给出的代码存在一些问题。首先,内层循环中的排序算法(冒泡排序)是错误的,因为我们只关心偶数,不需要对所有的元素进行排序。其次,我们使用 filter 函数来筛选偶数,但这种方法并不能保证结果按照从小到大的顺序排列。因此,我们需要修改代码,只保留偶数,并使用排序函数对它们进行排序。

正确的代码应该如下:


```python
def even(x):
return x % 2 == 0

c = [3, 7, 1, 18, 9, 12, 5, 2, 22, 10]
n = len(c)
even_nums = []

for i in range(n):
if even(c[i]):
even_nums.append(c[i])

even_nums.sort()
print(even_nums)
```
这个代码首先定义了一个自定义函数 even,用于判断一个数是否为偶数。然后,我们遍历 c 中的所有元素,并将偶数添加到 even_nums 列表中。最后,我们对 even_nums 进行排序,并打印出排序后的结果。

3、食堂问卷调查

学校食堂为了提高服务质量,让老师和同学们更好地投入工作和学习,对同学们开展了问卷调查,调查项目共 5 项(即 5 个问题),每个项目有 A、B、C 三个选项,同学们每题可选一项,学校后勤管理的李老师对调查结果进行了收集整理,并存放在"myd.csv"文件中(部分数据如图所示),现在需要分析同学们对这 5 个项目的答题情况,统计出每个项目选"A"的情况。李老师用 Python编写了以下代码,输出结果如下图,请你完善划线处。

import csv

with open("/data/ ")as f:

    cont=list(csv.reader(f))

    qk={"第 1 题":0,"第 2 题":0,"第 3 题":0,"第 4 题":0,"第 5 题":0}

    for row in cont[ ]:

        for i in range( len(row)):

            if row[i]== :

                qk["第"+str(i+1)+"题"]+=1

for i in range(5):

print("第"+str(i+1)+"题选 A 的人数为:"+str(qk["第"+str(i+1)+"题"]))

参考答案:①"myd.csv"②1:③"A"

解析:【喵呜刷题小喵解析】:

1. 根据题目描述,李老师需要分析同学们对这5个项目的答题情况,统计出每个项目选"A"的情况。因此,首先需要读取"myd.csv"文件中的数据。在代码中,这一步是通过`open()`函数和`csv.reader()`函数来实现的。因此,①处应填写"myd.csv"。

2. 在读取文件后,李老师创建了一个字典`qk`,用于存储每个项目选"A"的人数。然后,通过遍历`cont`列表中的每一行数据,统计每个项目选"A"的人数。在代码中,这一步是通过`for row in cont[1:]`来实现的。由于题目中提到"部分数据如图所示",可以推测`cont`列表的第一行是列名,因此`cont[1:]`表示从第二行开始遍历数据。因此,②处应填写"1:"。

3. 在遍历每一行数据时,需要判断每个项目是否选"A"。在代码中,这一步是通过`if row[i]=="A"`来实现的。由于题目中给出每个项目有A、B、C三个选项,因此③处应填写"A"。

4. 最后,通过遍历字典`qk`,输出每个项目选"A"的人数。在代码中,这一步是通过`for i in range(5):`和`print()`函数来实现的。

喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!

创作类型:
原创

本文链接:2024月03月Python三级实操答案及解析

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章
share