Найдите способ добавить строку в кортеж - PullRequest
0 голосов
/ 25 июля 2011
y="Peter Email: peter@rp.com Phone: 91291212"
z="Alan Email: alan@rp.com Phone: 98884444"
w="John Email: john@rp.com Phone: 93335555"
add_book=str(y) ,"" + str(z) ,"" + str(w)

** Я пытаюсь добавить контакт в мою адресную книгу, но я не уверен, как добавить строку "детали" в add_book.Я также обнаружил, что не могу использовать append, потому что это кортеж.

details = raw_input("Enter name in the following format: name Email: Phone:")                      
        print "New contact added"
        print details 
if details in add_book:
    o=add_book+details
    print "contact found"
    print details
print add_book

address_book = {}
address_book['Alan'] = ['alan@rp.com, 91234567']#this is what I was supposed to do:

#but when I print it out, the output I get is:

{'Alan': ['alan@rp.com, 91234567']} #but I want to remove the '' and {}

Я все еще любитель программирования на python, поэтому мне действительно нужна вся помощь, которую я могу получить, спасибо :) !!

Ответы [ 2 ]

2 голосов
/ 25 июля 2011

Простым решением будет использование списка вместо кортежа.Вы можете сделать это, изменив инициализацию 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]

Конечно, вы можете изменить его так, как вам нравится.

2 голосов
/ 25 июля 2011

сначала [] - это список. кортеж - (,);

так что вы хотите

address_book['Alan'] = ('alan@rp.com', '91234567')

Но это кажется довольно странным. Что я хотел бы сделать, это создать класс

class Contact(object):
    name = "Contact Name"
    email = "Contact Email"
    ph_number = "00000000"

    def __str__(self):
        return "%S: %s, %s" % (self.name, self.email, self.ph_number)

1011 * тогда *

address_book = []
contact_alan = Contact()
contact_alan.name = "Alan"
contact_alan.email = "alan@rp.com"
contact_alan.ph_number = "91234567"

print contact

(не рядом с машиной с python, так что это может быть немного не так. Будет проверять, когда я смогу добраться до одного.)

РЕДАКТИРОВАТЬ: - как Павел указал в своем комментарии:

class Contact(object):

    def __init__(self, name, email, ph_number):
        self.name = name
        self.email = email
        self.ph_number = ph_number

contact_alan = Contact(name="Alan", email = "alan@rp.com", ph_number="91234567")
...