我一直在为这个练习而苦苦挣扎,虽然我明白整个程序不能跟随。请纠正我错误的地方:首先创建字典cities
,然后在该字典中将纽约和波特兰分配到NY和OR。然后创建一个名为find_city
的函数,其参数为themap
和state
。这个函数中的if
声明让我误解了它究竟是如何工作的。LPTHW Excercise#40-字典麻烦
函数后面的第一行似乎不是必要的,但也许这是我的知识需要扩展的地方。为什么分配cities['_find']=findcity
?另外,为什么变量_find
在它之前有一个下划线?我知道你可以用任何你想要的字符串来创建变量,但是在这个字符串中的第一个字符只有一个随机的下划线似乎是非常随意的,也许有一个原因?
因此,然后while循环 - 用户被要求输入一个状态,如果它不是state
循环中断。我不确定state
是如何定义的,因为我看到它的唯一地方是作为find_city
的参数之一。
该行city_found=cities['_find'](cities,state)
似乎相当于city_found=find_city(cities,state)
。下一行打印city_found
,这似乎是find_city
函数的输出。我不能很好地把握这个过程,以便用字典创建一个类似的程序。很抱歉,很长一段时间,我在这里呆了一段时间。任何帮助是极大的赞赏!
cities = {'CA': 'San Francisco', 'MI': 'Detroit', 'FL': 'Jacksonville'}
cities['NY'] = 'New York'
cities['OR'] = 'Portland'
def find_city(themap, state):
if state in themap:
return themap[state]
else:
return "Not found."
cities['_find'] = find_city
while True:
print "State? (ENTER to quit)",
state = raw_input("> ")
if not state: break
city_found = cities['_find'](cities, state)
print city_found
在python中,名称前的下划线通常表示不应该被访问的内部函数。在这种情况下,我认为下划线将它与列表中的其他条目区分开来。这个练习是用来说明一个人可以用字典做什么,而不一定要做什么。调用find_city()函数是处理它的完全合法的方式。 – 2012-02-12 20:44:51