请问这个代码的错误在哪里?

请问这个代码的错误在哪里?

source = "9527, John, Manager, Development, 5000$9584, Lily, Analyst, Research, 8000$2347, Peter, Salesman, Market, 9000"
a = source.split("$")
ALL = {}
for i in range(0, len(a)):
   b = a[i].split(",")
   c = {"number":b[0] , "name":b[1] , "job":b[2] , "department":b[3] , "salary":b[4]}
   ALL[c["number"]] = c
print(ALL)
d = input("请输入员工编号:")
e = c.get(d)
if d in ALL:
   print("编号:{},姓名:{}, 岗位:{}, 部门:{}, 工资:{}".format_map(e))
else:
   print("员工信息不存在!")

以上代码输入完后,我input了9527,按道理它应该是输出9527员工的信息,但是结果却是员工信息不存在,是哪里写错了呢?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学,你好。

代码中错误出现在下图所示位置:

http://img1.sycdn.imooc.com//climg/5d3d06f80001aea012540506.jpg

错误原因:

(1)c.get(d)方法获取所有的信息,只能获取到最近一次存储的信息

(2)使用format_map()进行格式化时应该使用关键字参数的赋值方式

你可参照下图进行修改:

http://img1.sycdn.imooc.com//climg/5d3d08060001921117860809.jpg

如果我解决了您的问题,请采纳!祝~学习愉快~

  • 威风的小金币 提问者 #1
    还不是很明白,既然get函数能够获取所有信息,怎么又会只能获取最近一次存储的信息呢?你这里的“最近一次存储的信息”是指??而且c.get(d)的意思不是指在字典c中获取编号d的员工信息吗?请问print('******')是什么意思呢?
    2019-07-28 20:18:02
  • 慕之熠_灿烈 回复 提问者 威风的小金币 #2
    请参照最新回答予以理解。
    2019-07-29 10:02:29
慕之熠_灿烈 2019-07-29 10:01:23

同学,你好。

(1)因为循环中已将遍历的前两位人员的信息添加到了ALL中,遍历到第三个人员并将他的信息也添加至ALL后,c的引用(也就是内存中)只保留了最后一次遍历得到的信息,如下图:

http://img1.sycdn.imooc.com//climg/5d3e51660001437417530862.jpg

(2)最后一次存储是指最后一次遍历得到并存储至c中的人员信息

(3)c.get(d)是获取字典c中对应的键(key)的value值,若没有这样的键,则返回None,而且因为只保留了最后一位人员信息,故无法满足需求

http://img1.sycdn.imooc.com//climg/5d3e53600001c3d315780862.jpg

(4)print(‘*******’)是调试代码时用于标记的语句(可删除)

如果我解决了您的问题,请采纳!祝~学习愉快~

  • 提问者 威风的小金币 #1
    了解了,那么如果我想使用get函数的话,我是否是将字典c重新赋值给一个变量(比如F),而这个变量因为没有参与循环遍历,所以就不会出现只保留了最后一次遍历得到的信息的情况,那当我使用F.get(d)的时候就能成功引用信息了?
    2019-08-01 12:58:27
  • 慕之熠_灿烈 回复 提问者 威风的小金币 #2
    赋值给其他变量必须是字典类型(依据你的业务),且必须定义在循环之外,就像之前给你提供的正确代码截图一样,这样才可以正确利用get方法获取对应的员工编号信息。
    2019-08-01 19:39:03
  • 提问者 威风的小金币 回复 慕之熠_灿烈 #3
    明白了,谢谢
    2019-08-01 21:34:52
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
1.Python零基础入门
  • 参与学习           人
  • 提交作业       2727    份
  • 解答问题       8160    个

想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师