书上原代码:
=====================================================================================
#使用get()的简单数据库
#这里添加代码清单4-1中插入数据库的代码
labels = {
'phone':'phone number',
'addr':'address'
}
name = raw_input('Name: ')
#查找电话号码还是地址?
request = raw_input('Phone number (p) or address (a)? ')
#使用正确的键
key = request #如果请求既不是'p'也不是'a'
if request == 'p' : key = 'phone'
if request == 'a' : key = 'addr'
#使用get()提供默认值:
person = peole.get(name,{})
label = labels.get(key,key)
result = person.get(key,'not available')
print "%s's %s is %s." %(name,label,result)
=====================================================================================
执行结果:
我修改后代码:
=====================================================================================
#!/usr/bin/env python
#-*- encoding:utf-8 -*-
#使用get()的简单数据库
#这里添加代码清单4-1中插入数据库的代码
labels = {
'phone':'phone number',
'addr':'address'
}
name = raw_input('Name: ').strip()
#查找电话号码还是地址?
request = raw_input('Phone number (p) or address (a)? ')
#使用正确的键
key = request #如果请求既不是'p'也不是'a'
if request == 'p' : key = 'phone'
if request == 'a' : key = 'addr'
#使用get()提供默认值:
peole = {}
labels = {}
person = ()
person = peole.get(name,{})
label = labels.get(key,key)
result = person.get(key,'not available')
print "%s's %s is %s." %(name,label,result)
=====================================================================================
执行结果:
问题:
看上面原文代码报错信息是说people是没有定义的,在代码最后几行使用的peole.get(name,{}) labels.get(key,key) person.get(key,'not available') 用到了字典的get()方法,这里peole、 labels、 person 这3个字典都是没有定义的,使用get方法时报错,所以我在之前加了定义这三个字典。之后就没有报错了
-----------该次代码清单主要是通过get()方法来给空的字典给予初始值----------------