嵌套(高分)列表python出现气泡排序错误

2024-06-26 08:21:40 发布

您现在位置:Python中文网/ 问答频道 /正文

对于我的软件专业,我必须创建一个程序。总之,在将高分列表写入文件之前,需要对其进行排序。为此,我使用了冒泡排序,但不能使用内置的排序函数。从中读取数据的文本文件存储在嵌套列表中。文本文件如下所示:

NameOne
10
NameTwo
15
NameThree
9

这是我有但不起作用的冒泡排序代码:

^{pr2}$

我需要把分数从高到低排序。任何帮助将不胜感激,你将适当地记入我的计划学分:)。谢谢。在


Tags: 文件函数代码程序列表软件专业排序
2条回答

在第一次迭代之后,您正在执行b_not_sorted = False,但它不应该在那里!算法在完成排序之前就停止了。

您应该改为只做b_not_sorted = True操作if highest_scores[counter] < highest_scores[counter + 1]


另外,在Python中交换代码看起来会更好。不要使用temp_var,只需执行以下操作:

highest_scores[counter], highest_scores[counter+1] = highest_scores[counter+1], highest_scores[counter]

Python样式指南建议您不要在if语句中编写== True或{}。这样做:

^{pr2}$

这里有个提示:

检查外部while循环运行了多少次。它应该运行不止一次,对吗?不管发生什么,总会发生什么导致循环退出?

试着逐行检查代码,看看每一点都发生了什么。

外循环末尾的语句b_not_sorted = False将导致只执行一次后外循环退出。您需要将该语句移到代码的另一部分。试着把你脑子里的b_not_sorted改成I_still_need_to_go_through_the_list

显然在第一行:

while I_still_need_to_go_through_the_list:

这应该是真的,因为你根本没看清单。你不知道是不是有秩序。

在台词后面:

^{pr2}$

当然,我们还需要再做一次检查,因为我们只是对列表进行了更改,需要确保不再需要进行进一步的更改。

但是如果没有改变呢?I_still_need_to_go_through_the_list应该是{}。如果我们把I_still_need_to_go_through_the_list = Falsefor循环之前,那么它将是False,除非我们对列表进行更改,这正是我们想要的。

相关问题 更多 >