python-3.x 检查声明时列表中的对象,但不检查用户追加到列表中的对象

mw3dktmi  于 2022-12-27  发布在  Python
关注(0)|答案(1)|浏览(108)

当我试图检查用户的输入是否与列表中的对象属性相同时,它检查的是列表中声明的对象,而不是附加到列表中的对象。
这是一个很难解释的问题,我已经尽力了。如果你不明白或者需要更多的信息,请告诉我。
我正在为上下文创建一个联系人列表。我创建了一个具有名称、号码和地址属性的联系人类。我试图查看用户输入的号码是否与列表中对象的号码属性相同。然而,当我调试并将联系人放入列表时,当我添加新的联系人并尝试查看代码是否知道用户的输入是否与添加的联系人相同时,它不起作用。
下面是我的代码:

class Contact:
    def __init__(self, name, number, address):
        self.name = name
        self.number = number
        self.address = address

    def __str__(self):
        return f"{self.name}, ({self.number}), {self.address}"

contact_list = []

def add_contact():
    global contact_list
    valid_name = False
    valid_number = False
    while not valid_name:
        contact_name = input("Who would you like to add as your contact?: ")
        name_taken = False
        for contact in contact_list:
            if contact.name == contact_name:
                print("Name is taken in contacts!")
                name_taken = True
                break
        if not name_taken:
            valid_name = True
    while not valid_number:
        contact_number = input("What is their number?: ")
        if len(contact_number) == 10 and contact_number.isnumeric():
            number_taken = False
            for contact in contact_list:
                if contact.number == int(contact_number):
                    print("Number is taken in contacts!")
                    number_taken = True
                    break
            if not number_taken:
                valid_number = True
            else:
                valid_number = False
        else:
            print("Invalid number!")
    contact_address = input("What is their house address?: ")
    new_contact = Contact(contact_name, contact_number, contact_address)
    contact_list.append(new_contact)
    print("Contact list:")
    for contact in contact_list:
        print("- " + contact.__str__())

add_contact()
add_contact()
t2a7ltrp

t2a7ltrp1#

联系人号码作为字符串存储在contact_list中,因此它永远不会与您要比较的int匹配。

相关问题