0

私は次のコードを持っています:

people = {'Bob' : {'phone' : '12',
            'birthday' : 'May',
            'address' : 'ABC',
            'interests' : ['a', 'b', 'c']},
        'Mary' : {'phone' : '13',
            'birthday' : 'April',
            'address' : 'CBA',
            'interests' : ['d', 'e', 'f']},

            response = ['']
wrong = "I don't know. Try again or type 'quit' to get out: " 
while response[0] != 'quit': 
    response = raw_input("Please enter who you're looking for, or type 'quit' to get out: ").split() 
    try:
        print "%s's %s is %s" % (response[0], response[1], people[response[0]][response[1]])  
    except KeyError: 
        print wrong,

どんな場合でも入力が可能であり、それでも正しい出力を生成できるようにしたいと思います。例えば

'Mary phone', 'mary Phone', 'MARY PHONE'

すべて与える

Mary's phone number is 13.
4

2 に答える 2

3

を使用する必要がcapitalize()ありますlower()

while response[0] != 'quit': 
    response = raw_input("Please enter who you're looking for, or type 'exit' to quit the program: ").split() 
    try:
        print "%s's %s is %s" % (response[0].capitalize(), response[1].lower(), people[response[0].capitalize()][response[1].lower()])  
    except KeyError: 
        print wrong,

このルートに行く場合は、'bob'キーをに変更する必要があります...'Bob'

または、以下のrubikで説明されているように、結果を再利用すると、CPUサイクルをさらに数回節約できます。

while response[0] != 'quit': 
    response = raw_input("Please enter who you're looking for, or type 'exit' to quit the program: ").split() 
    try:
        fn, thing = response[0].capitalize(), response[1].lower()
        print "%s's %s is %s" % (fn, thing, people[fn][thing])  
    except KeyError: 
        print wrong,
于 2012-05-08T14:45:47.890 に答える
2

を使用して入力を小文字に変換し、入力が常に小文字であることを確認してくださいstr.lower()。次に、people{}検索を簡単にするために、すべての名前も小文字であることを確認し、出力を実行するときに出力を大文字の名前にフォーマットし直します。

于 2012-05-08T14:46:25.880 に答える