image

编辑人: 长安花落尽

calendar2025-05-10

message6

visits678

2022年09月Python三级实操答案及解析

一、编程题

1、36.如下图有一个名为“book.csv”的文件,小明想计算所有库存书籍的总价,于是编写了下面代码。请将红色①\②\处的代码补充完整。
b = 0
s = 0
with open('/data/book.csv', 'r', encoding='utf-8') as f:
for line in f.  ①   ():
a = line.strip("\n").split(",")
b = b+1
if b >1: # 第一行是标题,所以从第二行开始计算
s = s + int(a[1]) *   ②  
print('总价:' , s)

参考答案:

解析:【喵呜刷题小喵解析】:首先,我们需要读取每一行数据,所以①处应填入“reader”,即“f.reader()”。其次,我们需要将第四列(索引为3)的数据转换为浮点数,然后乘以第二列(索引为1)的数据,所以②处应填入“float(a[3])”。因此,完整的代码应为:```pythonb = 0s = 0with open('/data/book.csv', 'r', encoding='utf-8') as f:for line in f.reader():a = line.strip("\n").split(",")b = b+1if b >1: # 第一行是标题,所以从第二行开始计算s = s + int(a[1]) * float(a[3])print('总价:', s)```这段代码将读取“book.csv”文件,并计算所有库存书籍的总价。其中,第一行是标题,所以从第二行开始计算。每一行的数据通过逗号分隔,第二列是书籍的数量,第四列是书籍的单价,通过将它们相乘并累加,可以得到所有库存书籍的总价。

2、37.小敏想用二分法对关键字14进行查找,请你帮她补全代码。
lst=[3,12,7,45,9,10,31,90,1,23,14,52]

key=14
n=len(a)
i,j=0,n-1
flag=-1
while ② :
mid=(i+j)//2
if key==a[mid]:
flag=mid
break
elif key>a[mid]:

else:
j=mid-1
if ④ :
print(str(key)+'没找到!')
else:
print(str(key)+'已找到!')

参考答案:

解析:【喵呜刷题小喵解析】:在这个问题中,我们需要使用二分查找法来查找列表中的关键字。首先,我们设定了列表lst和要查找的关键字key。二分查找法的基本思路是,每次比较列表中间元素与目标值,如果中间元素正好是要查找的元素,则查找结束;如果目标值小于中间元素,则在列表的左半部分继续查找;如果目标值大于中间元素,则在列表的右半部分继续查找。在给出的代码框架中,我们需要填写①、②、③和④处的代码。对于①,由于题目已经给出了列表lst,所以①处不需要填写。对于②,while循环的条件应该是i<=j,表示在列表的左半部分和右半部分都还有元素时,继续查找。对于③,如果目标值大于中间元素,应该在列表的右半部分继续查找,所以应该将i设为mid+1。对于④,如果flag的值仍然是-1,表示没有找到目标值,所以应该输出"没找到!",否则应该输出"已找到!"。因此,完整的代码如上所示。

3、38.标准考试答题卡一般采用2B铅笔填涂,填涂好的答题卡经过扫描后得到相应的数字化图像,再通过光学识别,完成答题卡信息数据的采集、分析与统计。计算机判断答题卡中信息点被填涂的标准是灰度值小于132为黑色,灰度值大于等于132为白色。灰度值计算公式:灰度值=0.299×红色分量(R)+0.587×绿色分量(G)+0.114×蓝色分量(B),若分别输入n个信息点的RGB颜色值,则其判断程序如下:
n=int(input("请输入信息点个数:"))
count=0
for i in range(1,n+1):
​ R=int(input(”请输入红色分量:”))
   ①   
​ B= int(input(”请输入蓝色分量:”))
​ Gray_scale=   ②   
​ if    ③   :
​ print(“黑色”)
​ count=count+1
​ else:
​ print(“白色”)
print("黑色像素总共有:"+   ④   +"个")

参考答案:

解析:【喵呜刷题小喵解析】首先,题目给出了灰度值的计算公式:灰度值=0.299×红色分量(R)+0.587×绿色分量(G)+0.114×蓝色分量(B)。然后,题目要求编写一个程序,根据输入的RGB颜色值,判断信息点是否被填涂。根据题目要求,程序应该首先输入信息点的个数n,然后对于每一个信息点,输入其RGB颜色值,并根据灰度值计算公式计算灰度值。如果灰度值小于132,则该信息点被填涂,否则未被填涂。程序需要统计被填涂的信息点个数,并在最后输出黑色像素的总个数。在编写程序时,需要注意以下几点:1. 输入信息点个数n时,需要使用int()函数将输入转换为整数类型。2. 对于每一个信息点,需要分别输入红色分量、绿色分量和蓝色分量,同样需要使用int()函数将输入转换为整数类型。3. 计算灰度值时,需要将计算结果转换为整数类型,可以使用int()函数进行转换。4. 判断信息点是否被填涂时,需要使用if语句进行判断,如果灰度值小于132,则输出“黑色”,否则输出“白色”。5. 统计被填涂的信息点个数时,可以使用一个变量count进行计数,每次判断为黑色时,将count加1。6. 最后,输出黑色像素的总个数时,需要将count转换为字符串类型,可以使用str()函数进行转换。

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

创作类型:
原创

本文链接:2022年09月Python三级实操答案及解析

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