這是自己做的練習,可能有錯誤,歡迎討論和各種最佳化重構方案。
根據反饋,或者code review,對本篇文章答案或者相關內容的更新補充,一般會被添加在本篇部落格的評論中。
將盡量保證每題的答案代碼是完整的,不僅僅是函數或者類,開啟Python 2.7的IDLE,將代碼完整拷貝進去,就能調試運行。
歡迎訪問Balian在部落格園的家。 http://www.cnblogs.com/balian
13-10.
堆棧和隊列。編寫一個類,定義一個能夠同時具有堆棧()和隊列()操作行為的資料結構。這個類和Perl語言中的數組相像。需要實現四個方法:
shift() 返回並刪除列表中的第一個元素,類似於前面的dequeue()函數。
unshift() 在列表的頭部“壓入”一個新元素。
push() 在列表的尾部加上一個新元素,類似於前面的enqueue()和push()方法。
pop() 返回並刪除列表中的最後一個元素,與前面的pop()方法完全一樣。
請參見練習13-8和練習13-9。
【答案】
代碼如下:
#-*- encoding: utf-8 -*-class ArrayPattern(object): '定義數組模型類' def __init__(self, arrayList): self.arrayList = arrayList def shift(self): headItem = self.arrayList[0] print 'Item ', headItem, ' is deleted from the head of array.' self.arrayList = self.arrayList[1:] print 'The updated array is: ', self.arrayList, '\n' def unshift(self, headItem): tempList = [headItem] for item in self.arrayList: tempList.append(item) self.arrayList = tempList print 'Item ', headItem, ' is added on the head of array' print 'The updated array is: ', self.arrayList, '\n' def push(self, endItem): self.arrayList.append(endItem) print 'Item ', endItem, ' is added on the end of array.' print 'The updated array is: ', self.arrayList, '\n' def pop(self): endItem = self.arrayList.pop() print 'Item ', endItem, ' is poped.' print 'The updated array is: ', self.arrayList, '\n' a_array = ArrayPattern([1, 2, 3, 4, 5, 6, 7, 8])a_array.shift()a_array.unshift(9)a_array.push(10)a_array.pop()
【執行結果】
Item 1 is deleted from the head of array.
The updated array is: [2, 3, 4, 5, 6, 7, 8]
Item 9 is added on the head of array
The updated array is: [9, 2, 3, 4, 5, 6, 7, 8]
Item 10 is added on the end of array.
The updated array is: [9, 2, 3, 4, 5, 6, 7, 8, 10]
Item 10 is poped.
The updated array is: [9, 2, 3, 4, 5, 6, 7, 8]
13-11.
電子商務。
你需要為一家B2C(企業到消費者)零售商編寫一個基礎的電子商務引擎。你需要寫一個針對顧客的類User,一個對應存貨清單的類Item,還有一個對應購物車的類叫Cart。貨物放到購物車裡,顧客可以有多個購物車。同時購物車裡可以有多個貨物,包括多個同樣的貨物。
【未完】
感覺有難度,暫時押後。
13-12.
聊天室。
因為部落格只討論技術,所以題目略有修改,原題請見書第408頁。建立一個新的聊天室。你需要三個類:一個Message類,它包含一個訊息字串以及諸如廣播、單方收件者等其他資訊;一個User類,包含了進入你聊天室的某個人的所有資訊。還有一個Room類,它體現了一個更加複雜的聊天系統,使用者可以在聊天時建立單獨的“房間”,並邀請其他人加入。附加題:請為使用者開發一個圖形化使用者介面應用程式。
【未完】
感覺有難度,暫時押後。