鱼C论坛

 找回密码
 立即注册
查看: 2795|回复: 4

本办法学python例题40疑问

[复制链接]
发表于 2014-9-22 18:47:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. cities = {"CA":"San Francisco","MI":"Detroit","FL":"Jacksonville"}
  2. cities["NY"] = "New York"
  3. cities["OR"] = "Portland"

  4. def find_city(themap,state):
  5.         if state in themap:
  6.                 return  themap[state]
  7.         else :
  8.                 return "Not found."

  9. cities["_find"] = find_city


  10. while True:
  11.         print("State?(EBTER TO QUIT)"),
  12.         state = raw_input(">")

  13.         if not state :break

  14.         city_found = cities["_find"](cities,state)

  15.         print(city_found)
复制代码
这个例题我看的云里雾里,我在shell里运行了下,发现就是输入key就返回对应值
cities["_find"] = find_city

city_found = cities["_find"](cities,state)
这两处我也不能理解,新人一枚,求解疑



小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-9-22 21:12:38 | 显示全部楼层
这好像是个递归呃,先吐槽下,嘻嘻。print用括号了居然还用raw_input,而且回车貌似是ENTER。
嘿嘿,不要介意。
cities["_find"] = find_city这句是在cities这个字典里加上key"_find"对应value:find_city,这个value还是它自己这个函数。
所以这句
city_found = cities["_find"](cities,state),cities["_find"]这个就等于find_city,后面那俩就是参数。把cities当参数传进去,进行第一个判断。这里可以改成find_city(cities,state) 上面那句可以删了。加进去貌似没啥作用。 360截图20140922211250442.jpg

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-23 10:22:54 | 显示全部楼层
感谢2楼解答
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-9-30 12:23:54 | 显示全部楼层
不懂,记号下,下次再看
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-4 09:26:26 | 显示全部楼层
准备敲进去练习下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-16 05:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表