using python 3: here is my code. i ALWAYS RATE MY ANSWER. tHANKS [[[[[[[[[[[[[[[
ID: 3829739 • Letter: U
Question
using python 3: here is my code. i ALWAYS RATE MY ANSWER. tHANKS
[[[[[[[[[[[[[[[[[[[[[
;here my 3 different codes:
prog12.py
def isValidPhone(tPhone):
"""
description: check if phone is valid
precondition: the function takes a parameter
"""
validity = False
# check if '(###)###-####'
if len(tPhone)==13 and tPhone[0]=='(' and tPhone[4]==')' and tPhone[8]=='-':
if tPhone[1:4].isdigit() and tPhone[5:8].isdigit() and tPhone[9:].isdigit():
validity = True
#check if '###-###-####'
elif len(tPhone)==12 and tPhone[3]==tPhone[7]=='-':
if tPhone[:3].isdigit() and tPhone[4:7].isdigit() and tPhone[8:].isdigit():
validity = True
return validity
class Text:
def __init__(self, tmpPhoneStr, tmpArrivaleDate, tmpMsgTxt):
"""
description: The function check the phone arrivaldate and msgtxt
precondition: Itthe function takes 4 parameters
"""
self._phoneNum = tmpPhoneStr
self._date = tmpArrivaleDate
self._msg = tmpMsgTxt
self.setRead(False)
def setRead(self, tmpIfRead):
"""
precondition: the function takes a parameter
"""
self.isRead = tmpIfRead
def toList(self):
"""
description: the function return phone number, date and message
precondition: the function takes a parameter
"""
return [self.getPhone(), self.getDate(), self.getMsg()]
def getPhone(self):
"""
description: the function call the phone number
precondition:the function takes a parameter
"""
return self._phoneNum
def getDate(self):
"""
description: the function call the date
precondition: the function takes a parameter
"""
return self._date
def getMsg(self):
"""
description: the fuction get the message entered.
precondition:the function takes a parameter
"""
return self._msg
def isUnread(self):
"""
description: the function call the unread message
precondition: the function takes a parameter
"""
return self._isRead
def readMsg(self):
"""
description: the function call the read message
precondition: the function takes a parameter
"""
self.setRead(True)
return self._msg
def printMenu(tMessages):
"""
description: this function print the menu
precondition: the function takes a parameter
"""
print(" MENU ")
ct = 0
for oneMessage in tMessages:
ct += 1
print(str(ct) + '. ' + oneMessage)
def isValidDate(string):
"""
description: Define a function myFormat which
accepts 3 parameters (a number, totalWidth, and numberDigitsRightOfDecimal).
precondition: the function takes a parameter
"""
if len(string)==10 and string[2]==string[5]=="/" and string[:2].isdigit() and int(string[:2])<=12
and string[3:5].isdigit() and int(string[3:5])<=31 and string[6:].isdigit() and int(string[6:])>0:
return True
else:
return False
MENU_OPTIONS = ("Add New Message", "Count of messages", "Print Inbox",
"Print individual message", "Retrieve list of unread messages",
"Retrieve all messages from a particular phone number",
"Retrieve all messages arrived after a date/time",
"Delete individual message", "Delete all messages from a particular sender",
"Delete all messages older than # of days", "Clear Inbox", "Quit")
MODESMS_INBOX:
from datetime import datetime, timedelta
from program12 import*
class SMS_Inbox:
def __init__(self):
"""description: creates an empty inbox
preconditions: none
"""
self._messages=[]
def printOneMessage(self, pos):
"""
description: the function print the messages
precondition: the function takes 2 parameters
"""
print(self._messages[pos])
def addNewArrival(self, tmpPhoneStr, tmpArrivalDate, tmpMsgStr):
"""
description: adds a new message to the inbox (where the info for the message is
collected into a tuple with (boolean, ph, dt, msg)
precondition: the function takes 4 parametersaccepts 3 parameters tmpPhoneStr is a string
tmpArrivalDate is an object of type datetime
tmpMsgStr is any string of characters
"""
# returns True if successfully put inbox
# check if valid phone number
if isValidPhone(tmpPhoneStr) and len(tmpMsgStr)<=140:
self._messages.append((False, tmpPhoneStr, tmpArrivalDate, tmpMsgStr) )
return True
else:
return False
def countMessages(self):
"""
description: the function counts the number of messages
precondition: None
"""
# returns num messages in inbox
return len(self._messages)
def deleteMsg(self, pos):
"""
description: removes a message from the inbox at that position
precondition: tIndex is positive integer or zero
"""
deleted = -1
# returns 1 if message is deleted, or -1 if not
if pos < len(self._messages)and pos >=0:
self._messages.pop(int(pos))
deleted = 1
return deleted
def deleteMsgsFromSender(self, tmpPhoneStr):
"""
description: the function deletes all the message from
that phone number
precondition: tmpPhoneStr is a string
"""
# returns number of messages deleted
tmpNewInbox= []
ct =0
#countDeleted = len(self.getInbox())
for text in self._messages:
if text[1] == tmpPhoneStr:
ct +=1
else:
#if text.getPhone() != tmpPhoneStr:
tmpNewInbox.append(text)
#countDeleted -= 1
self._messages = tmpNewInbox
return ct
def deleteOlderMsgs(self, numDays):
tmpNewInbox= []
ct=0
d1 = datetime.today()
for text in self._messages:
d2 = d1-text[2]
d2 = d2.days
if d2 <=numDays:
tmpNewInbox.append(text)
else:
ct += 1
self._messages = tmpNewInbox
return ct
"""
tmpNewInbox = []
d1 = datetime.today()
countDeleted = len(self.getInbox())
#if (date.today() - text.getDate()).days >= numDays:
# check that the number of days is valid
if numDays < 0:
return -1
for text in self.getInbox():
#d2 = timedelta(days)
d2 = text.getDate()
if (d1 - d2).days >= numDays:
#(date.today() - text.getDate()) >= numDays:
tmpNewInbox.append(tup)
countDeleted -= 1
self._messages = tmpNewInbox
return countDeleted
tmpNewInbox= []
d1= datetime.today()
countDeleted = len(self._messages)
if numDays < 0:
return -1
for text in self._messages:
totnumbDays = d1 - text[2]#timedelta object
totnumbDays = totnumbDays.days
if totnumbDays >= numDays:
tmpNewInbox.append(text)
countDeleted -=1# deleted
self._messages = tmpNewInbox
return countDeleted
"""
def retrieveUnread(self):
tmpNewInbox = []
for text in self._messages:
if text[0]== False:
tmpNewInbox.append(text)
text[0]= True
return tmpNewInbox
def retrieveMsgFromPhone(self, tmpPhoneStr):
"""
description:
precondition: the function takes 2 parameters
"""
# returns list of phoneNumber lists
# check that phoneNumber is valid
if not isValidPhone(tmpPhoneStr):
return []
# otherwise get list of messages by phone numbers
tmpInbox = []
ct = 0
for text in self._messages:
print(text)
if text[1] == [tmpPhoneStr]:
# change text to read
text = (True,text[1],text[2],text[3])
self._messages[ct]= text
tmpInbox.append(text)
return tmpInbox
def retrieveMsgsAfterDate(self, tmpDate):
"""
description: the function retrieve a list of msgs after date
precondition: the function takes 2 parameters
"""
# return list of phoneNumber Lists
tmpInbox = []
ct = 0
# check that the number of days is valid
for text in self._messages:
print(text)
if text[2] > tmpDate:
text = (True,text[1],text[2],text[3])
self._messages[ct]= text
tmpInbox.append(text)
return tmpInbox
def clearInbox(self):
self._messages=[]
return self._messages#return read to true
#def getInbox(self):
#"""
#description: the list that contain subtuples holding infos for one message
#precondition:
#"""
#return self._messages
def __str__(self):
tmpStr="{:20s}{:20s}{:12s}{:<140s}".format("SenderPhone", "Date/Time Recieved", "Read?", "Message")
for text in self._messages:
if text[0] == True:
#if text.isUnread:
read = "yes"
else:
read = "no"
tmpStr+=" {!s:20s}{!s:20s}{!s:12s}{!s:<140s}".format(text[1],
text[2].strftime('%m/%d/%Y'), read,text[3])
return tmpStr
P12TEST:WHERE YOU SHOULD RUN THE CODE
from modsms_inbox import *
from datetime import *
myInbox = SMS_Inbox( )
print("***Empty inbox -- count is ", myInbox.countMessages())
print("***Inbox empty: ",myInbox)
result = myInbox.deleteMsg(5)
print("***Delete from Empty Inbox: FALSE ",result)
numDeleted = myInbox.deleteMsgsFromSender("111-222-3333")
if numDeleted == 0: print("no messages from 111-222-3333")
numDeleted = myInbox.deleteOlderMsgs(5)
if numDeleted == 0: print("***no older msgs deleted")
else: print("***Number msgs deleted: ", numDeleted)
listUnread = myInbox.retrieveUnread( )
print("***List of unread msgs: EMPTY", listUnread)
listUnread = myInbox.retrieveMsgsAfterDate(datetime(2017,1,1) )
print("***List of unread msgs: EMPTY", listUnread)
listUnread = myInbox.retrieveMsgFromPhone("111-111-1111" )
print("***List of unread msgs: EMPTY", listUnread)
print(" ***Adding 4 messages to inbox")
myInbox.addNewArrival("111-111-1111",datetime(2017,2,1), "Hi on Feb 1 2017")
myInbox.addNewArrival("222-222-2222",datetime(2017,4,1), "Hello on Apr 1 2017")
myInbox.addNewArrival("111-111-1111",datetime(2017,4,6), "Bye on Apr 6 2017")
myInbox.addNewArrival("222-222-2222",datetime(2017,4,18), "Hello on Apr 18 2017")
print(" ***Count of msgs should be 4: ",myInbox.countMessages() )
print(" ***Inbox after adding 4: ",myInbox)
listFrom2 = myInbox.retrieveMsgFromPhone("222-222-2222")
print(" ***Messages from 222-222-2222: Hello on Apr 1 2017, Apr 18 2017 ")
print("***Inbox should show True for msgs from 222-222-2222 ",myInbox)
print(" ***print one message -- #2 -- Bye on Apr 6 2017")
tmp = myInbox.printOneMessage(2); print(tmp)
print(" ***Retrieving msgs after April 2,2017 -- should be 2 of those")
listAfter = myInbox.retrieveMsgsAfterDate(datetime(2017,4,2))
print(" ***listAfterApr2 should be Apr6 and Apr 18: ",listAfter)
print(" ***Inbox all True except Feb 1 2017 ", myInbox)
print(" ***Deleting message 1 -- Hello from April 1 2017 GONE")
myInbox.deleteMsg(1)
print(myInbox)
print(" ***Deleting msgs from 111-111-1111: ")
myInbox.deleteMsgsFromSender("111-111-1111")
print("***ONLY ONE msg left ", myInbox)
print(" ***Adding 3 msgs, then deleting older")
myInbox.addNewArrival("111-111-1111",datetime(2015,2,1), "Hi on Feb 1 2017")
myInbox.addNewArrival("222-222-2222",datetime(2015,4,1), "Hello on Apr 1 2017")
myInbox.addNewArrival("111-111-1111",datetime(2015,4,6), "Bye on Apr 18 2017")
numDeleted = myInbox.deleteOlderMsgs(2)
print(" ***Number deleted should be 3: ",numDeleted)
print("***Only Hello on April 18 2017 should be left ",myInbox)
myInbox.clearInbox()
print(" ***Inbox cleared: ",myInbox)
;;WHEN I RUN THE CODE FROM THE P12 TEST, HERE IS MY OUTPUT: THE PROBLEM HERE IS THAT I SHOULD GET YES ON 222-222-2222
Inbox all True except Feb 1 2017: THIS PART HAS TO BE FIXED TOO
AND ***Number deleted should be 3: 5. SHOULD BE 3 INSTEAD OF 5
Python 3.4.3 (default, Nov 17 2016, 01:08:31)
[GCC 4.8.4] on linux
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>>
***Empty inbox -- count is 0
***Inbox empty: SenderPhone Date/Time Recieved Read? Message
***Delete from Empty Inbox: FALSE -1
no messages from 111-222-3333
***no older msgs deleted
***List of unread msgs: EMPTY []
***List of unread msgs: EMPTY []
***List of unread msgs: EMPTY []
***Adding 4 messages to inbox
***Count of msgs should be 4: 4
***Inbox after adding 4:
SenderPhone Date/Time Recieved Read? Message
111-111-1111 02/01/2017 no Hi on Feb 1 2017
222-222-2222 04/01/2017 no Hello on Apr 1 2017
111-111-1111 04/06/2017 no Bye on Apr 6 2017
222-222-2222 04/18/2017 no Hello on Apr 18 2017
(False, '111-111-1111', datetime.datetime(2017, 2, 1, 0, 0), 'Hi on Feb 1 2017')
(False, '222-222-2222', datetime.datetime(2017, 4, 1, 0, 0), 'Hello on Apr 1 2017')
(False, '111-111-1111', datetime.datetime(2017, 4, 6, 0, 0), 'Bye on Apr 6 2017')
(False, '222-222-2222', datetime.datetime(2017, 4, 18, 0, 0), 'Hello on Apr 18 2017')
***Messages from 222-222-2222: Hello on Apr 1 2017, Apr 18 2017
***Inbox should show True for msgs from 222-222-2222
SenderPhone Date/Time Recieved Read? Message
111-111-1111 02/01/2017 no Hi on Feb 1 2017
222-222-2222 04/01/2017 no Hello on Apr 1 2017
111-111-1111 04/06/2017 no Bye on Apr 6 2017
222-222-2222 04/18/2017 no Hello on Apr 18 2017
***print one message -- #2 -- Bye on Apr 6 2017
(False, '111-111-1111', datetime.datetime(2017, 4, 6, 0, 0), 'Bye on Apr 6 2017')
None
***Retrieving msgs after April 2,2017 -- should be 2 of those
(False, '111-111-1111', datetime.datetime(2017, 2, 1, 0, 0), 'Hi on Feb 1 2017')
(False, '222-222-2222', datetime.datetime(2017, 4, 1, 0, 0), 'Hello on Apr 1 2017')
(False, '111-111-1111', datetime.datetime(2017, 4, 6, 0, 0), 'Bye on Apr 6 2017')
(False, '222-222-2222', datetime.datetime(2017, 4, 18, 0, 0), 'Hello on Apr 18 2017')
***listAfterApr2 should be Apr6 and Apr 18:
[(True, '111-111-1111', datetime.datetime(2017, 4, 6, 0, 0), 'Bye on Apr 6 2017'), (True, '222-222-2222', datetime.datetime(2017, 4, 18, 0, 0), 'Hello on Apr 18 2017')]
***Inbox all True except Feb 1 2017
SenderPhone Date/Time Recieved Read? Message
222-222-2222 04/18/2017 yes Hello on Apr 18 2017
222-222-2222 04/01/2017 no Hello on Apr 1 2017
111-111-1111 04/06/2017 no Bye on Apr 6 2017
222-222-2222 04/18/2017 no Hello on Apr 18 2017
***Deleting message 1 -- Hello from April 1 2017 GONE
SenderPhone Date/Time Recieved Read? Message
222-222-2222 04/18/2017 yes Hello on Apr 18 2017
111-111-1111 04/06/2017 no Bye on Apr 6 2017
222-222-2222 04/18/2017 no Hello on Apr 18 2017
***Deleting msgs from 111-111-1111:
***ONLY ONE msg left
SenderPhone Date/Time Recieved Read? Message
222-222-2222 04/18/2017 yes Hello on Apr 18 2017
222-222-2222 04/18/2017 no Hello on Apr 18 2017
***Adding 3 msgs, then deleting older
***Number deleted should be 3: 5
***Only Hello on April 18 2017 should be left
SenderPhone Date/Time Recieved Read? Message
***Inbox cleared: SenderPhone Date/Time Recieved Read? Message
>>>
;;;;;;;;;;;;;;
Program 10 Creating and Using a Class Part 2 (20 pts) Use the UML diagram shown to create the class The private data should be a LIST of tuples. Each list will contain the information about a single text message For each text message, the following information should be included in the tuple o has BeenRead: Boolen o sender Phone: String o alTime datetime o msg Text: String The names of the class and the methods must be EXACTLY as specified! Your customer's programs DEPEND on this! Each method must have a signature that follows the specifications in the UML EXACTLY. For example, if the UML indicates a method has 1 integer parameter and 1 string parameter, your method must have EXACTLY that number and type of parameters Class SMS Inbox inbox List NOTE: the list will contain subtuples. Each subtuple holds the information for one message. You are REQUIRED to use the following structure for each sublist (has Been Read, (senderPhone,arrivalTime,msg Text) Example of how the inbox will look if the inbox is printed after 2 messages have been added and one has been read (False, '11 1-222-3333', datetime.datetime (2015, 1, 15, 8, 15) 'meet me at MSUM')], (True, '111-345-3678', datetime.datetime(2015, 10, 15, 7, 20), 'back at noon) constructor SMS Inbox str String prints the entire inbox printOneMessage(index integer): String +addNewArrival (senderPhone String, arriveTime datetime msg Text StringExplanation / Answer
from datetime import date
def isValidPhone(tPhone):
validity = False
# check if '(###)###-####'
if len(tPhone)==13 and tPhone[0]=='(' and tPhone[4]==')' and tPhone[8]=='-':
if tPhone[1:4].isdigit() and tPhone[5:8].isdigit() and tPhone[9:].isdigit():
validity = True
# check if '###-###-####'
elif len(tPhone)==12 and tPhone[3]==tPhone[7]=='-':
if tPhone[:3].isdigit() and tPhone[4:7].isdigit() and tPhone[8:].isdigit():
validity = True
return validity
class Text:
def __init__(self, tmpPhoneStr, tmpArrivaleDate, tmpMsgTxt):
self._phoneNum = tmpPhoneStr
self._date = tmpArrivaleDate
self._msg = tmpMsgTxt
self.setRead(False)
def setRead(self, tmpIfRead):
self._isRead = tmpIfRead
def toList(self):
return [self.getPhone(), self.getDate(), self.getMsg()]
def getPhone(self):
return self._phoneNum
def getDate(self):
return self._date
def getMsg(self):
return self._msg
def isUnread(self):
return not self._isRead
def readMsg(self):
self.setRead(True)
return self._msg
class SMSInbox:
def __init__(self):
self._messages=[]
def printOneMessage(self, tmpIndex):
print((self.getInbox()[tmpIndex]).toList())
def addNewArrival(self, tmpPhoneStr, tmpArrivalDate, tmpMsgStr):
# returns True if successfully put inbox
# check if valid phone number
if isValidPhone(tmpPhoneStr) and len(tmpMsgStr)<=140:
self._messages.append(Text(tmpPhoneStr, tmpArrivalDate, tmpMsgStr))
return True
else:
return False
def countMessages(self):
# returns num messages in inbox
return len(self._messages)
def deleteMsg(self, tIndex):
deleted = -1
# returns 1 if message is deleted, or -1 if not
if tIndex.isdigit() and int(tIndex) < len(self.getInbox()):
self._messages.pop(int(tIndex))
deleted = 1
return deleted
def deleteAllMsgsFromSender(self, tmpPhoneStr):
# returns number of messages deleted
tmpNewInbox= []
countDeleted = len(self.getInbox())
for text in self.getInbox():
if text.getPhone() != tmpPhoneStr:
tmpNewInbox.append(text)
countDeleted -= 1
self._messages = tmpNewInbox
return countDeleted
def deleteOlderMsgs(self, numDays):
# returns number of messages deleted
tmpNewInbox = []
countDeleted = len(self.getInbox())
# check that the number of days is valid
if numDays < 0:
return -1
for text in self.getInbox():
if (date.today() - text.getDate()).days >= numDays:
tmpNewInbox.append(text)
countDeleted -= 1
self._messages = tmpNewInbox
return countDeleted
def retrieveUnread(self):
# returns list of list of phoneNumber List
tmpNewInbox = []
for text in self.getInbox():
if text.isUnread():
tmpNewInbox.append(text.getMsg())
return tmpNewInbox
def retrieveMsgFromPhone(self, tmpPhoneStr):
# returns list of phoneNumber lists
# check that phoneNumber is valid
if not isValidPhone(tmpPhoneStr):
return []
# otherwise get list of messages by phone numbers
tmpInbox = []
for text in self.getInbox():
if text.getPhone() == tmpPhoneStr:
# change text to read
text.readMsg()
tmpInbox.append(text.toList())
return tmpInbox
def retrieveMsgsAfterDate(self, tmpDate):
# return list of phoneNumber Lists
tmpInbox = []
# check that the number of days is valid
for text in self.getInbox():
if text.getDate() > tmpDate:
# change text to read
text.readMsg()
tmpInbox.append(text.toList())
return tmpInbox
def clearInbox(self):
self._messages=[]
def getInbox(self):
return self._messages
def __str__(self):
tmpStr="{:20s}{:20s}{:12s}{:<140s}".format("SenderPhone", "Date/Time Recieved", "Read?", "Message")
for text in self.getInbox():
read = "Yes"
if text.isUnread:
read = "No"
tmpStr+=" {:20s}{:20s}{:12s}{:<140s}".format(text.getPhone(),
text.getDate().strftime('%m/%d/%Y'), read, text.getMsg())
return tmpStr
def printMenu(tMessages):
print(" MENU ")
ct = 0
for oneMessage in tMessages:
ct += 1
print(str(ct) + '. ' + oneMessage)
def isValidDate(string):
if len(string)==10 and string[2]==string[5]=="/" and string[:2].isdigit() and int(string[:2])<=12
and string[3:5].isdigit() and int(string[3:5])<=31 and string[6:].isdigit() and int(string[6:])>0:
return True
return False
MENU_OPTIONS = ("Add New Message", "Count of messages", "Print Inbox",
"Print individual message", "Retrieve list of unread messages",
"Retrieve all messages from a particular phone number",
"Retrieve all messages arrived after a date/time",
"Delete individual message", "Delete all messages from a particular sender",
"Delete all messages older than # of days", "Clear Inbox", "Quit")
inbox = SMSInbox()
# temporary
inbox.addNewArrival("123-123-1234", date(2016, 4, 19), "message1")
inbox.addNewArrival("000-000-0000", date(2015, 11, 8), "message2")
inbox.addNewArrival("123-123-1234", date(2015, 11, 9), "message3")
printMenu(MENU_OPTIONS)
choice = input(' Please enter your choice... ')
while choice != str(len(MENU_OPTIONS)):
if choice == "1":
# ask for input and then enter new message into inbox
tmpPhone = input("Please enter a phone number to send the text from: ")
if not isValidPhone(tmpPhone):
tmpPhone = input("Bad Input -- Please enter a phone number to send the text from: ")
tmpDate = input("Please enter a date (MM/DD/YYYY) in which the text was recieved: ")
if not isValidDate(tmpDate):
tmpDate = input("Bad Input -- Please enter a date (MM/DD/YYYY) in which the text was recieved: ")
tmpDate = date(int(tmpDate[6:]), int(tmpDate[:2]), int(tmpDate[3:5]))
tmpMsg = input("Please enter a message to send")
inbox.addNewArrival(tmpPhone, tmpDate, tmpMsg)
elif choice == "2":
# print count of messages
print(' Count of Messages:', inbox.countMessages()," ")
input("Please press enter to continue")
elif choice == "3":
# print all messages
print(inbox)
elif choice == "4":
# get individual message
print(" Please enter an integer for which message you would like to print from 0 up to", end=" ")
tmpIndex = input(inbox.countMessages()-1)
if tmpIndex.isdigit():
tmpIndex = int(tmpIndex)
while tmpIndex not in range(inbox.countMessages()):
print(" Error -- 0 up to", end=" ")
tmpIndex = input(inbox.countMessages()-1)
if tmpIndex.isdigit():
tmpIndex = int(tmpIndex)
inbox.printOneMessage(tmpIndex)
elif choice == "5":
# get unread messages from phone
if (len(inbox.retrieveUnread()) == 0):
print("No Unread messages")
else:
for message in inbox.retrieveUnread():
print(message)
elif choice == "6":
# get messages from phone
tmpPhone = input("Please enter a phone number to see texts: ")
if not isValidPhone(tmpPhone):
tmpPhone = input("Bad Input -- Please enter a phone number to send the text from: ")
print(inbox.retrieveMsgFromPhone(tmpPhone))
elif choice == "7":
# get all messages after a date
tmpDate = input("Please enter a date (MM/DD/YYYY) in which the text was recieved: ")
if not isValidDate(tmpDate):
tmpDate = input("Bad Input -- Please enter a date (MM/DD/YYYY) in which the text was recieved: ")
print(tmpDate[:2], tmpDate[3:5],tmpDate[-4:])
tmpDate= date(int(tmpDate[-4:]),int(tmpDate[:2]),int(tmpDate[3:5]))
print(inbox.retrieveMsgsAfterDate(tmpDate))
elif choice == "8":
# delete a message based on index
print(inbox)
print(" Please enter the index of the message you would like to delete from 0 to", end=" ")
tmpIndex = input(inbox.countMessages()-1)
inbox.deleteMsg(tmpIndex)
elif choice == "9":
# delete all messages from a sender
print(inbox)
tmpPhone = input("Please enter a phone number to delete all messages from: ")
if not isValidPhone(tmpPhone):
tmpPhone = input("Bad Input -- Please enter a phone number to delete all messages from: ")
print(inbox.deleteAllMsgsFromSender(tmpPhone), "messages deleted")
elif choice == "10":
print(inbox)
tmpDays = input("Please enter the number of days: ")
if not tmpDays.isdigit():
tmpDays = input("Bad Input -- Please enter the number of days old: ")
print(inbox.deleteOlderMsgs(int(tmpDays)), "messages deleted")
elif choice == "11":
inbox.clearInbox()
else:
print("Bad Input!")
printMenu(MENU_OPTIONS)
choice = input(' Please enter your choice: ')
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.