接下來我們將定義乙個類,該類為遊戲儲存高分(一般預設為前十名)
首先我們建立乙個儲存分數以及其對應的姓名的類gamescore,然後建立該類的物件新增進儲存高分的類scoreboard中,注意該類的add方法,當儲存的條目數還不足10個的時候,我們將新分數與之前的分數相比,然後插入到合適的名次位置,當儲存的條目數超過10時,將新分數與最後一名對比,若更高則將其插入到合適的名次位置,否則不插入。
class gamescore():
def __init__(self, score, name):
self._score = score
self._name = name
def get_score(self):
return self._score
def get_name(self):
return self._name
def __str__(self):
return '(, )'.format(self._name, self._score)
class scoreboard():
def __init__(self, capacity=10):
self._board = [0] * capacity
self._n = 0
def __getitem__(self, item):
return self._board[item]
def __len__(self):
return self._n
def __str__(self):
return '\n'join(str(self._board[j]) for j in range(self._n))
def add(self, entry):
score = entry.get_score()
if self._n < len(self._board) or score > self._board[-1].get_score():
if self._n < len(self._board):
self._n += 1
j = self._n - 1
while j > 0 and score > self._board[j-1].get_score():
self._board[j] = self._board[j-1]
j -= 1
self._board[j] = entry
if __name__ == '__main__':
sb = scoreboard()
for i in range(13):
gs = gamescore(i, 'lulu')
sb.add(gs)
gs = gamescore(20, 'lili')
sb.add(gs)
for j in sb:
print(j)
資料結構與演算法學習筆記
演算法基礎篇 第一章 演算法概述 首先了解一下基本的概念 1.1 什麼是演算法呢?從字面意義上理解,演算法就是用於計算的方法,用這種方法達到預期的結果。通俗的講,演算法可以理解為乙個完整的解題步驟,由一些基本的運算和規定的運算順序組成。通過這樣的解題步驟可以解決特定的問題。演算法可以抽象出5個特徵 ...
資料結構與演算法學習之演算法入門筆記
關於計算 物件 規律 技巧。目標 高效 低耗。computer science computing science演算法 特定計算模型下,旨在解決特定問題的指令序列。輸入 輸出 正確性 確定性 可行性 有窮性。hailstone序列目前無法證明有窮性或無窮性。程式 不等於 演算法 死迴圈 有窮性 好...
資料結構與演算法學習筆記 線性表(1)
2.1線性表的定義和基本操作 線性表是一種典型的線性結構。線性表 linear list 是由n n 0 個資料元素 結點 a1,a2,an組成的有限序列。所有節點具有相同的資料型別。資料元素的個數n稱為線性表的長度。若線性表中的結點是按值由小到大 或大到小 排列的,稱線性表是有序的。線性表是一種相...