【发布时间】:2012-02-12 20:26:10
【问题描述】:
我一直在努力完成这个练习,虽然我了解整个程序的作用,但我无法继续进行。请纠正我哪里出错:首先创建字典cities,然后在该字典中将纽约和波特兰分配给纽约和 OR。然后创建一个名为find_city 的函数,其参数为themap 和state。这个函数中的if 语句让我对它的工作原理感到困惑。
函数后面的第一行似乎没有必要,但也许这是我需要扩展知识的地方。为什么分配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中,名称前的下划线通常表示不应访问的内部函数。在这种情况下,我认为下划线将其与列表中的其他条目区分开来。本练习用于演示 可以 使用 dicts 做什么,而不一定是应该做什么。调用 find_city() 函数是一种完全合法的处理方式。
标签: python function dictionary while-loop