хранилище смс Python с использованием класса - PullRequest
0 голосов
/ 11 мая 2018

Я пытаюсь запустить базовую смс-программу в файле python.Идея состоит в том, что программа задаст вам вопрос о том, хотите ли вы отправить или прочитать смс.каждая смс будет иметь тег from_number, message_body и прочитанный / непрочитанный тег.Итак, идея в том, что вы начинаете с подачи смс, затем вводите свой номер источника и текстовое тело.это хранит это в списке.затем вы можете вспомнить этот массаж позже, и когда вы прочитаете его, флаг непрочитанного должен измениться на чтение

части, которые я считаю самой большой проблемой, это понимание того, как определить экземпляр класса и использование функций внутри класса при получении пользовательского ввода и передаче его в программу.

код SMS1 - это попытка сгенерировать экземпляр вручную с его атрибутами.

возможно у меня вся эта структура неправильная.любая помощь будет высоко ценится.

#An SMS Simulation

SMSStore = []
#start of the class
class SMSMessage:


    def __init__(self,messageText,fromNumber):
        global SMSStore
        self.messageText = messageText
        self.fromNumber = fromNumber
        #self.originnumber = originnumber
        #self.hasBeenRead = False

    def MarkAsRead(self):
        self.hasBeenRead = bool(True)

    def add_sms(self,smses):
        for number in range(smses):
            soure_number = int(input("please enter source number..."))
            message_body = str(input("please enter message body..."))
            new_message = (soure_number,message_body)
            SMSStore.append(new_message)
            return print(SMSStore)

    def get_count(self):
        return print(SMSMessage.count())

    def get_message(self):
        return print(len(SMSStore))

    def get_unread_messages(self):  #still need to figure this out with a read or unread tag
        pass

    def remove_sms(self):
        sms_to_del = int(input("which sms number do you want to delete: "))
        del SMSStore[sms_to_del]
sms1 = SMSMessage("hello","123")


print(sms1.fromNumber)
print(sms1)


userchoice = None

while userchoice != "quit":
    userchoice = input("what would you like to do - read/send/quit?")
    if userchoice == "read":
        SMSStore.get_count()
        #place your logic here
    elif userchoice == "send":
        smses = int(input("number of smses to be added"))
        SMSMessage.add_sms(smses)
        #place your logic here
        print(SMSStore)
    elif userchoice == "quit":
        print ("goodbye")
    else:
        print ("oops - incorrect input")

1 Ответ

0 голосов
/ 11 мая 2018

Вот мой пример, проверьте его:

class Messenger:

    sms_store = [{'title': 'test', 'text': 'Some text here', 'readed': False}]

    def __init__(self):
        self.greeting()
        self.prompt()


    def greeting(self, *arg, **kw):
        print('Hello there!')
        print('In your inbox {} messeges, ({} is new)'.format(
            len(self.sms_store), len(list(filter(bool, [not x.get('readed') for x in self.sms_store])))))

    def prompt(self):
        while True:
            command, *args =  input("\nWhat would you like to do?\n> ").split()
            if command == 'quit':
                break
            elif hasattr(self, command):
                getattr(self, command)(*args)
            else:
                print('>>> Wrong command! <<<')

    def list(self, *arg, **kw):
        print('Messeges:')
        for n, sms in enumerate(self.sms_store):
            print('Num:', n, 'Readed:', sms.get('readed'), 'Title:', sms.get('title'))

    def get(self, sms_num, *arg, **kw):
        if not sms_num or int(sms_num) >= len(self.sms_store):
            print('>>> Wrong msg Number! <<<')
        else:
            sms = self.sms_store[int(sms_num)]
            print(sms.get('title'))
            print(sms.get('text'))
            self.mark_readed(int(sms_num))

    def mark_readed(self, sms_num, *arg, **kw):
        self.sms_store[sms_num]['readed'] = True

    def add_sms(self, title, *arg, **kw):

        self.sms_store.append({'title': title, 'text': ' '.join(arg), 'readed': False})
        print('Msg added!')

    def remove_sms(self, sms_num, *arg, **kw):
        if not sms_num or int(sms_num) >= len(self.sms_store):
            print('>>> Wrong msg Number! <<<')
        else:
            self.sms_store.pop(int(sms_num))


if __name__ == "__main__":
    m = Messenger()

Выход:

~ > $ python3 test.py 
Hello there!
In your inbox 1 messeges, (1 is new)

What would you like to do?
> list
Messeges:
Num: 0 Readed: False Title: test

What would you like to do?
> add_sms New_sms Some text is here!
Msg added!

What would you like to do?
> list
Messeges:
Num: 0 Readed: False Title: test
Num: 1 Readed: False Title: New_sms

What would you like to do?
> get 1
New_sms
Some text is here!

What would you like to do?
> list
Messeges:
Num: 0 Readed: False Title: test
Num: 1 Readed: True Title: New_sms

What would you like to do?
> remove_sms 0

What would you like to do?
> list
Messeges:
Num: 0 Readed: True Title: New_sms

What would you like to do?
> close
>>> Wrong command! <<<

What would you like to do?
> quit
~ > $ 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...