我目前正在创建一个海龟游戏,它将在一个记录数组中收集分数和首字母,我想运行一个插入排序,以便向用户显示他们是否收到了前三名中的一个。但是,每当我试图运行代码时,我收到一个属性错误。代码在这里(如果需要,可以提供更多代码):
def insertion_sort(scores):
value = 0
i=0
for i in range(1, len(scores)):
value = scores[i].Score
j = i - 1
while j>= 0 and scores[j].Score > value:
scores[j + 1].Score = scores[j].Score
j -=1
scores[j + 1].Score = value
return scores
我试过重新整理我的数据,改变它的存储方式,但没有任何帮助。我不确定还有什么可以尝试,因为我试过几种不同的解决方案,但没有任何成功。
1条答案
按热度按时间ercv8c1e1#
有没有可能您只是将一个数字列表传递给函数?因为这也可以解释属性错误:
AttributeError: 'int' object has no attribute 'Score'
使用列表解析可以很容易地将数字列表转换为记录列表。(或者像第一个例子中的字典)
否则,您的记录可能会缺少“分数”属性(您是否也使用了大写字母?)
我还使用枚举和切片对代码进行了一些优化,并切换了记录而不是值。
包含名称和分数的记录:
它们可以从具有分数的名字的字典中创建:
输出量:
我希望这是有帮助的。
只包含分数的记录
它们可以从数字列表中创建:
输出量: