Dec-08-2019, 11:50 PM
Hi,
I'm getting an error in the script.
IndexError: list index out of range
Can anyone help?
I'm getting an error in the script.
IndexError: list index out of range
Can anyone help?
class SMSMessage(object):
"""
This is the SMS Object
"""
def __init__(self, messageText, fromNumber):
""" This is a constructor for SMSMessage class """
self.fromNumber = fromNumber
self.hasBeenRead = False
self.messageText = messageText
self.SMSStore = []
def markAsRead(self):
""" mark message as read """
self.hasBeenRead = True
def add_sms(self, text, number):
""" create a new sms msg and add to sms store """
newSms = SMSMessage(text, number)
self.SMSStore.append(newSms)
def get_count(self):
""" get the total number of SMS """
print(len(self.SMSStore))
def get_message(self, index):
""" get stored SMS message from a specific index """
msg = self.SMSStore[index]
print(msg.messageText)
msg.hasBeenRead = True
def get_unread_messages(self):
""" show all unread messages """
print([each_sms.messageText for each_sms in self.SMSStore if each_sms.hasBeenRead == False])
def remove(self, msg):
""" remove msg """
print(msg)
print(self.SMSStore[0].messageText)
for sms in self.SMSStore:
if sms.messageText == msg:
self.SMSStore.remove(sms)
print("msg removed!")
# sms = SMSMessage("hello there", 1231231)
# sms.add_sms("hello there", 1231231)
# sms.add_sms("hello there again", 1231231)
# sms.get_message(0)
# print(sms.get_unread_messages())
while True:
menu = """
1. Send SMS
2. Read SMS
3. Delete SMS
4. Quit
"""
print(menu)
userChoice = int(input("Choice: "))
if userChoice == 1:
sender_number = input("Sender Number: ")
message_text = input("Message body: ")
sms = SMSMessage(sender_number, message_text)
sms.add_sms(message_text, sender_number)
print("sms sent to", sender_number )
elif userChoice == 2:
index = int(input("Enter the message index: "))
# print(sms.SMSStore)
print(sms.get_message(index))
elif userChoice == 3:
msg = input("Enter the message text you want to delete: ")
sms.remove(msg)
elif userChoice == 4:
break
else: print("Oops - incorrect input")
