How to think like a Computer Scientist: 課後習題第十五章6

#-------------------------------------------------------------------------------
# Name:        module2
# Purpose:
#
# Author:      penglaixy
#
# Created:     31/08/2013
# Copyright:   (c) penglaixy 2013
# Licence:     <your licence>
#-------------------------------------------------------------------------------
class SMS_store:
    def __init__(self):
        self.message_list = []
        pass

    def add_new_arrival(self,from_number, time_arrived, text_of_SMS):
        '''
        Makes new SMS tuple, inserts it after other messages
        in the store, When creating this message, its has_been_viewed status is
        set False
        '''
        self.message_list.append((False,from_number,time_arrived, text_of_SMS))

    def message_count(self):
        '''
        Returns the number of sms messages in my_inbox
        '''
        return len(self.message_list)

    def get_unread_indexes(self):
        '''
        Returns list of indexes of all not-yet-viewed SMS message.
        '''
        ret_list = []
        for (idx,mes) in enumerate(self.message_list):
            if mes[0] == False:
                ret_list.append(idx)

        return ret_list

    def get_message(self, i):
        '''
        Return (from_number, time_arrived, text_of_sms) for message[i]
        Also change its state to "has been viewed".
        If there is no meesage at position i, return None
        '''
        if i >= len(self.message_list):
            return None

        from_number = self.message_list[i][1]
        time_arrived = self.message_list[i][2]
        text_of_SMS = self.message_list[i][3]

        if self.message_list[i][0] == False:
            self.message_list[i] = (True, from_number, time_arrived, text_of_SMS)

        return (from_number, time_arrived, text_of_SMS)

    def clear(self):
        '''
        Delete all messages from inbox
        '''
        self.message_list = []
        return

    def delete(self, i):
        '''
        Delete the message at index i
        '''
        if i >= len(self.message_list):
            return

        self.message_list.pop(i)

        return

def main():
    my_inbox = SMS_store()
    my_inbox.add_new_arrival("13008842985", "13:30","I miss you!")
    my_inbox.add_new_arrival("13675852509", "14:30","I love you!")
    my_inbox.add_new_arrival("13675825216", "14:30","Si pang zi!")

    print my_inbox.message_list

    print "My_inbox message number is {0}.".format(my_inbox.message_count())

    print "In my_inbox message unread message index list are : {0}.\
".format(my_inbox.get_unread_indexes())

    print my_inbox.get_message(1)

    print my_inbox.message_list

    print "In my_inbox message unread message index list are : {0}.\
".format(my_inbox.get_unread_indexes())

    my_inbox.delete(1)

    print my_inbox.message_list

    my_inbox.clear()

    print my_inbox.message_list

if __name__ == '__main__':
    main()
[(False, '13008842985', '13:30', 'I miss you!'), (False, '13675852509', '14:30', 'I love you!'), (False, '13675825216', '14:30', 'Si pang zi!')]
My_inbox message number is 3.
In my_inbox message unread message index list are : [0, 1, 2].
('13675852509', '14:30', 'I love you!')
[(False, '13008842985', '13:30', 'I miss you!'), (True, '13675852509', '14:30', 'I love you!'), (False, '13675825216', '14:30', 'Si pang zi!')]
In my_inbox message unread message index list are : [0, 2].
[(False, '13008842985', '13:30', 'I miss you!'), (False, '13675825216', '14:30', 'Si pang zi!')]
[]


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章