【发布时间】:2014-02-20 17:21:09
【问题描述】:
我是计算机课的学生,我们必须编写一个包含文件处理和排序的程序。我已经完成了文件处理并写出了我的排序(这是一个简单的排序),但它没有对列表进行排序。我的代码是这样的:
namelist = []
scorelist = []
hs = open("hst.txt", "r")
namelist = hs.read().splitlines()
hss = open("hstscore.txt","r")
for line in hss:
scorelist.append(int(line))
scorelength = len(scorelist)
for i in range(scorelength):
for j in range(scorelength + 1):
if scorelist[i] > scorelist[j]:
temp = scorelist[i]
scorelist[i] = scorelist[j]
scorelist[j] = temp
return scorelist
我做 Python 的时间不长,所以我知道代码可能效率不高,但我真的不想使用完全不同的方法对其进行排序,而且我们不允许使用 .sort()或 .sorted() 因为我们必须编写自己的排序函数。是不是我做错了什么?
【问题讨论】:
-
您的
return声明放错了位置。事实上,你根本不需要 return 语句,除非所有这些代码都包含在方法或函数中 -
请注意,您已经对分数进行了排序,但没有对名称进行排序 - 这两个列表现在彼此不同步。
-
由于
i和j没有相对于彼此排序,因此您的交换也不会是。一个简单的改变可以使它成为冒泡排序的工作变体。 -
@MarkRansom 真的吗?你能告诉我吗?
-
始终确保
i小于j。我可能错了,它是冒泡排序的一种变体。