刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

38.工厂有一台检测设备用于检测器件,各个器件在不完全相同时刻送达,且检测时长各有不同。现在要按器件的送达时间(若送达时间相同则按检测时长)进行排序后再送检,送达时间和检测时间都是按升序排序。已知各个器件原始信息存在列表qj中:qj=[[2,1],[1,3],[0,2],[4,3],[12,4],[10,1],[4,1]],其中器件信息[2,1]表示器件送达时间是2,检测时长是1,其他器件信息类推。现在编写Python程序对各个器件进行排序,并重新输出。排序后的器件列表如下,请你在划线处完善程序:
qj=[[2,1],[1,3],[0,2],[4,3],[12,4],[10,1],[4,1]]
for i in range(len(qj)-1):
​ for j in range(0, ① ):
​ if ② or (qj[j][0]==qj[j+1][0]and ③ ):
​ qj[j],qj[j+1]=qj[j+1],qj[j]
print( ④ )

使用微信搜索喵呜刷题,轻松应对考试!

答案:

```pythonfor i in range(len(qj)-1):for j in range(0, len(qj)-i-2):if qj[j][0] > qj[j+1][0] or (qj[j][0] == qj[j+1][0] and qj[j][1] > qj[j+1][1]):qj[j], qj[j+1] = qj[j+1], qj[j]print(qj)```

解析:

【喵呜刷题小喵解析】:

这个问题涉及到冒泡排序,我们按照送达时间(若送达时间相同则按检测时长)进行排序。首先,我们从外层循环开始,每次循环都会比较相邻的两个器件,如果前一个器件的送达时间大于后一个器件的送达时间,或者两个器件的送达时间相同但前一个器件的检测时长大于后一个器件的检测时长,我们就交换这两个器件的位置。这样,经过多次循环后,我们就能得到一个按送达时间和检测时长排序的器件列表。

在给出的代码框架中,我们需要填写以下部分:

①:这里应该填写`len(qj)-i-1`,因为每次外层循环后,最大的器件已经被放到了正确的位置,所以内层循环只需要比较到`len(qj)-i-1`。

②:这里应该填写`qj[j][0] > qj[j+1][0]`,表示比较两个器件的送达时间。

③:这里应该填写`qj[j][1] > qj[j+1][1]`,表示当两个器件的送达时间相同时,比较它们的检测时长。

④:这里应该填写`qj`,表示输出排序后的器件列表。
创作类型:
原创

本文链接:38.工厂有一台检测设备用于检测器件,各个器件在不完全相同时刻送达,且检测时长各有不同。现在要按器件

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

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share