0

我目前正在学习 Python 的基础知识,我需要创建一个包含十个人的姓名数据库,包括其他详细信息(电话号码、地址、生日和三个兴趣)。

梦想是在提示符下输入一个人的名字后,他们的所有详细信息都会出现。或者在输入时name['phone'],会出现人名和电话号码。地址,生日和兴趣相同。有人告诉我,我必须能够使用 argv 列表从命令行获取名称和相关字段(电话、爱好等),但我不确定如何执行此操作。任何帮助将非常感激!

这是我为字典编写的示例:

friends = {'Matt ' : {'phone' : '13579', 
                      'birthday' : '2 Dec', 
                      'address' : 'Sydney',
                      'interests' : ['a', 'b', 'c' ]},

           'Tim ' : {'phone' : '24680', 
                     'birthday' : '19 Feb', 
                     'address' : 'Honolulu',
                     'interests' : ['x', 'y', 'z' ]},

           'Kate ' : {'phone' :'12345', 
                      'birthday' : '30 Jun', 
                      'address' : 'Beijing',
                      'interests' : ['q', 'w', 'e' ]}
           }

name = raw_input ('Please enter search criteria: ')

if name in friends: 
    print 'yes'
else: 
    print 'no data'

非常感谢你!

4

4 回答 4

2

首先,您的字典键必须具有一致的样式。我的意思是,要么它们都以大写字母开头,要么它们都可能是大写或小写。此外,在键的开头或结尾有空格也不是一个好的选择。

假设您具有以下关键结构:

friends = {'Matt' : {'phone' : '13579', 
                  'birthday' : '2 Dec', 
                  'address' : 'Sydney',
                  'interests' : ['a', 'b', 'c' ]},

       'Tim' : {'phone' : '24680', 
                 'birthday' : '19 Feb', 
                 'address' : 'Honolulu',
                 'interests' : ['x', 'y', 'z' ]},

       'Kate' : {'phone' :'12345', 
                  'birthday' : '30 Jun', 
                  'address' : 'Beijing',
                  'interests' : ['q', 'w', 'e' ]}
       }

由于所有键都以大写字母开头并且开头或结尾没有空格,因此您可以执行以下操作:

name = raw_input('Please enter search criteria: ')
name = name.strip() # remove whitespace at the beginning and the end of the string
name = name.capitalize() # capitilize the first letter

当然,您可以在一行中调用字符串函数:

 name = name.strip().capitalize()

具体信息可以使用friends[name]['<key>']

于 2012-04-27T07:54:32.623 回答
1

这里有几个问题,你的钥匙最后都有一个空格,比如'Matt '. 而且它们不是小写的。

于 2012-04-27T07:29:40.380 回答
0

消除

name = name.lower()

因为您的字典没有所有小写字母的键,或者将您的字典更改为所有小写键。

于 2012-04-27T07:27:48.327 回答
0

您正在尝试做的是具有分离的数据和函数的经典过程编程- 函数被赋予数据来操作它们。这有时会导致复杂的数据结构。

我建议在这种情况下进行面向对象的编程。为一个人写一个类(它可以基于字典来捕获任何信息)。

于 2012-04-27T08:08:45.160 回答