《Python基础教程第二版》第六章抽象中的一段代码运行没有反应解决思路
《Python基础教程第二版》第六章抽象中的一段代码运行没有反应
运行之后没有报错。按书中的提示输完下一段应该有返回值的,为什么我输完代码木有反应呢?难道又是版本差异,我win7下python 3.4.2。
求大神指点。
------解决思路----------------------
某部分缩进不对吧,试试:
#编写可以查询人名的函数
def init(data):#data作为存储表,初始化,data中的存储格式为{‘first':{},'middle':{},'last':{})
data['first']={}
data['middle']={}
data['last']={}
def lookup(data, label, name):
return data[label].get(name) #get方法根据键找到值
def store(data,full_name):
names=full_name.split()#split方法,加入分隔符,默认为空格
if len(names)==2:names.insert(1,'')#如没有中间名插入空格
labels='first','middle','last'
for label,name in zip(labels,names):#zip内建函数,支持将可迭代对象作为参数,将对象中的元素打包成一个个元组,返回由这些元组组成的列表
people=lookup(data,label,name)
if people:
people.append(full_name) #如果对应的label(first,middle,last)的name已经存在,就把全名添加进去
else:
data[label][name]=[full_name]#键不存在时,自动添加键值
运行之后没有报错。按书中的提示输完下一段应该有返回值的,为什么我输完代码木有反应呢?难道又是版本差异,我win7下python 3.4.2。
MyNames={}
init(MyNames)
store(MyNames,'Magnet Lie Hetland')
lookup(MyNames,'middle','Lie')
求大神指点。
------解决思路----------------------
某部分缩进不对吧,试试:
...
for label,name in zip(labels,names):#zip内建函数,支持将可迭代对象作为参数,将对象中的元素打包成一个个元组,返回由这些元组组成的列表
people=lookup(data,label,name)
if people:
people.append(full_name) #如果对应的label(first,middle,last)的name已经存在,就把全名添加进去
else:
data[label][name]=[full_name]#键不存在时,自动添加键值