首页 > 解决方案 > 电话簿不能存储 2 个同姓的人

问题描述

电话簿不能存储多个同名的人。例如,如果我有一个姓氏 x 的条目,并且我尝试创建一个姓氏 x 的新条目,它将用最后一个 x 输入的信息替换之前的 x。这是code.blablablablablabla(我不能说更多,但它不允许我发布)

# Used to store the entries in the telephone book
entries = []
new_entries = {}




# Create flag to decide when the program ix exited
exit_program = False

while exit_program == False:
    print( "Welcome to the EG-244 Telephone Book" )
    print( "------------------------------------\n" )
    print( "Please select from one of the following options:" )
    print( "\t1. Add a new entry" )
    print( "\t2. List entries" )
    print( "\t3. Search for an entry" )
    print( "\t4. Delete an entry" )
    print( "\t5. Add a personal note" )
    print( "\t6. Remove a personal note" )
    print( "\t7. Quit" )
    menu_input = input()
    menu_num = int(menu_input)
    if menu_num == 1:
        print("\nCan i have your Last name, First name,Age and phone number please")
        last_name=input("Last name:")
        name=input("Name:")
        age=input("Age:")
        phone=input("Phone number:")
        new_entries[last_name] = {'Last Name':last_name, 'First Name':name, 'Age':age, 'Telephone':phone,'Personal Notes':{'1.':'', '2.':''}}
        entries.append(new_entries.copy())
        entries=sorted(new_entries.keys(), key=lambda x:x.lower())
        continue
    elif menu_num == 2:
        if len(new_entries) == 0:
            print("No entries have been submitted yet")
            continue
        else:
            for i in entries:
                values=new_entries[i]
                print("Last Name:" + i)
                print("First Name:"+values['First Name'])
                print("Age:"+values['Age'])
                print("Phone Number:"+values['Telephone'])
                print('Personal Note 1.:'+values['Personal Notes']['1.'])
                print('Personal Note 2.:'+values['Personal Notes']['2.'])
                print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
            print("Currently there are" + str(len(entries)) + "entries")
            continue
    elif menu_num == 3:
        print("\nInsert the last name:")
        last_name=input()
        if last_name in new_entries:
            print (last_name, new_entries[last_name])
            continue
        else:
            print("\nThe person is not in the phone book")
            continue    
    elif menu_num == 4:
        print("\nInsert the Last name of the entry to be deleted:")
        last_name=input()
        if last_name in new_entries:
            del new_entries[last_name]


            print("Entry has been deleted")
            continue
        else:
            print("The entry does not exist")
            continue
    elif menu_num ==5:
        print("Can I have your last and first name please:")
        last_name=input("Last name:")
        name=input("First name:")
        note=input("Personal Note:")
        note_1=input("Another personal Note:")
        name in [x for v in new_entries.values() for x in v]
        if last_name in new_entries:
            new_entries[last_name]['Personal Notes']['1.']=note
            new_entries[last_name]['Personal Notes']['2.']=note_1
            print (last_name, new_entries[last_name])
            continue
        else:
            print("This entry does not exist")
            continue
    if menu_num == 6:
        print("Can I have your last and first name please:")
        last_name=input("Last name:")
        name=input("First name:")
        delete=input("Delete note 1 or 2?")
        delete=int(delete)
        name in [x for v in new_entries.values() for x in v]
        if last_name in new_entries:
            for notes in new_entries.values():
                if delete == 1:
                    new_entries[last_name]['Personal Notes']['1.']=''
                    print("1st Note deleted")
                elif delete == 2:
                    new_entries[last_name]['Personal Notes']['2.']=''
                    print("2nd Note deleted")
                    continue
        else:
            print("This entry does not exist")
    elif menu_num == 7:
        exit_program = True
    else:
        print( "Error: You entered an invalid choice. Please try again." )

print( "Thank you for using the EG-244 Telephone Book" )

标签: python-3.x

解决方案


我觉得

new_entries[last_name] = {'Last Name':last_name, 'First Name':name, 'Age':age, 'Telephone':phone,'Personal Notes':{'1.':'', '2.':''}}

应该是一个包含字典而不仅仅是字典的列表。

new_entries[last_name] = [{'Last Name':last_name, 'First Name':name, 'Age':age, 'Telephone':phone,'Personal Notes':{'1.':'', '2.':''}}]

这样,您可以将另一个项目附加到存储在同一last_name键下的列表中。

然后,您必须更新其余代码以处理此新数据结构。


推荐阅读