Простым решением будет использование списка вместо кортежа.Вы можете сделать это, изменив инициализацию add_book с:
add_book=str(y) ,"" + str(z) ,"" + str(w)
на:
add_book = [y,z,w]
#No need to call str() every time because your data are already strings
Однако, не будет ли больше смысла организовывать ваши данные в виде списка словарей?Например:
contacts = ["Peter", "Alan", "John"]
addr_book = [len(contacts)]
for i in range(len(contacts)):
contact = contacts[i]
email= raw_input(contact+"'s email: ")
phone= raw_input(contact+"'s phone: ")
addr_book[i] = {'name':contact, 'email':email, 'phone':phone}
ДАЛЕЕ:
Если я правильно понял ваш вопрос, у вас есть конкретные требования к тому, как должен выглядеть вывод вашей программы.Если вы используете вышеуказанный формат данных, вы можете создать любой вывод, который вам нравится.например, этот код
def printContact(contact):
print contact['name']+': ['+contact[email]+','+contact[phone]+']'
выведет что-то вроде:
Alan: [alan@email.com,555-555-5555]
Конечно, вы можете изменить его так, как вам нравится.