Python电话簿

时间:2015-03-11 19:15:33

标签: python dictionary

我搜索过类似的任务,但我没有找到任何全面的。我被赋予了制作符合以下要求的电话簿的任务。

  1. -add 名称编号 - 添加姓名和号码

    -lookup name - 打印名称

    的数字

    -alias name newname - 添加"昵称"到现有名称

    -change 名称编号 - 将数字更改为alredy现有名称

    -save filename - 将电话簿保存到文件

    -load filename - 读取文件并丢弃内存中的电话簿(wat?)之后只有文件中的电话簿应该 存在。

  2. 到目前为止,这是我的代码:

    prompt = ('command (add/lookup/alias/change/save/load/quit/)')
    
    phonebook = {}
    
    run = True
    
    while run:
    
    command = raw_input(prompt)
    if command == 'quit':
        run = False
    
    elif command == 'add':
        name = raw_input('name?')
        number = raw_input ('number?')
        phonebook[name]=number
    
    elif command == ('lookup'):
        name=raw_input ("Name?:")
        if name in phonebook:
            print name, phonebook[name]
        else:
            print "Does not exist"
    

    所以我需要有关如何实现别名更改突击队的帮助。保存和负载,我想我可以弄明白自己,但对这些人的任何帮助都会受到影响。

    由于

1 个答案:

答案 0 :(得分:2)

您可以将电话簿重新格式化为嵌套词典

phonebook = {
  "Steven": {"Alias": "Steve", "Number": "123-456-7890"}, 
  "Michael": {"Alias": "Mike", "Number": "987-654-3210"}
}

然后你可以看起来像

>>> phonebook['Steven']['Number']
'123-456-7890'

然后你的最后两个功能可能是

elif command == ('alias'):
    name = raw_input ("Name?:")
    nickname = raw_input ("Alias?:")
    if name in phonebook:
        phonebook[name]['Alias'] = nickname
    else:
        print "Does not exist"

elif command == ('change number'):
    name = raw_input ("Name?:")
    number = raw_input ("Number?:")
    if name in phonebook:
        phonebook[name]['Number'] = number
    else:
        print "Does not exist"

修改

elif command == 'add':
    name = raw_input('name?')
    number = raw_input ('number?')
    phonebook[name] = {'Alias': '', 'Number': number}

elif command == ('lookup'):
    name = raw_input ("Name?:")
    if name in phonebook:
        print name, phonebook[name]
    else:
        print "Does not exist"