| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
card_List = [{'name':'张三','phone':'123','email':'123@qq.com'}, 
             {'name':'李四','phone':'234','email':'234@qq.com'}, 
             {'name':'王五','phone':'345','email':'345@qq.com'}, 
             {'name':'赵九','phone':'456','email':'456@qq.com'} 
             ] 
FindName = input('请输入你要查询的名字:') 
for card_dict in card_List: 
    if card_dict['name'] == FindName: 
        print('姓名\t\t\t手机号\t\t\t邮箱') 
        print('{}\t\t\t{}\t\t\t{}'.format( 
                            card_dict['name'], 
                            card_dict['phone'], 
                            card_dict['email'] 
             )) 
        break 
    else: 
        print('该员工不存在') 
 
    #print(card_dict) 
 
 
因为Crad_list 中有4个值为字典的列表 
所以在遍历这个列表时 for循环下面的else会被执行好几次 
需求是 当我找到在列表中的字典并且打印输出      之前的 或者剩下的遍历循环中中 不会esle 以后的代码不会被执行 
想了一天了 求大佬解救
 本帖最后由 jackz007 于 2020-12-23 20:13 编辑 
        else 的缩进位置不对,调整一下就可以了。把原来属于 if 的 else 语句调整给了 for 语句,在循环正常结束的时候会执行到里面。如果是 break 退出的循环,就不会执行。 
        遍历寻找的逻辑是这样的,如果找到,可以当即下结论并退出循环,但是,没有找到的结论必须要在循环结束了才可以下。  
 - card_List = [{'name':'张三','phone':'123','email':'123@qq.com'},
 
 -              {'name':'李四','phone':'234','email':'234@qq.com'},
 
 -              {'name':'王五','phone':'345','email':'345@qq.com'},
 
 -              {'name':'赵九','phone':'456','email':'456@qq.com'}]
 
 - FindName = input('请输入你要查询的名字:') . strip()
 
 - if FindName:
 
 -     for d in card_List:
 
 -         if d['name'] == FindName:
 
 -             print('{}\t\t\t{}\t\t\t{}'.format(
 
 -                             d['name'],
 
 -                             d['phone'],
 
 -                             d['email']))
 
 -             break
 
 -     else:
 
 -         print('该员工不存在')
 
  复制代码 
 
 
 |   
- 
 
 
 
 
 
 
 
 |