0

私は現在Pythonの基礎を学んでおり、他の詳細(電話番号、住所、誕生日、および3つの興味)を含む10人の名前データベースを作成する必要があります。

夢は、プロンプトで人の名前を入力すると、すべての詳細が表示されることです。または、を入力する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

もちろん、文字列関数を 1 行で呼び出すことができます。

 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 に答える