python实现手机通讯录搜索功能


Posted in Python onFebruary 22, 2018

本文实例为大家分享了python通过输入联系人首字母查询联系人的具体代码,供大家参考,具体内容如下

# -*- coding:utf-8 -*- 
# 练习2: 
# 模拟手机通讯录搜索功能 
class PERSON(object): 
  def __init__(self): 
    self.name_list = ['zhangsan', 'zhangsanfeng', 'zhaoliu', 'wangwu', 'wulong', 'wanda', 'lisi', 'liuyang','luoxiaoxiao', 'linmeimei', 'luhan', 'gaohairui', 'guojing', 'huangrong', 'hanhan'] 
    #声明空字典 
    self.ss_dict = {} 
  def total(self): 
    #for循环遍历列表,取出每一个姓名 
    for name in self.name_list: 
      #取出首字母 
      s =name[0] 
      #判断字典中是否有s这个key 
      if s not in self.ss_dict: 
        #如果没有,根据key将存放name的列表放入字典 
        # s_list = [] 
        # s_list.append(name) 
        # self.ss_dict[s] = s_list 
        self.ss_dict[s] = [name] 
      else: 
        #如果有,根据key取出列表,将这个name添加到列表 
        s_list = self.ss_dict[s] 
        s_list.append(name) 
    print(self.ss_dict) 
  def add_person(self): 
    name = input('请输入姓名:') 
    if name not in self.name_list: 
      self.name_list.append(name) 
      s = name[0] 
      if s not in self.ss_dict: 
        self.ss_dict[s] = [name] 
      else: 
        s_list = self.ss_dict[s] 
        s_list.append(name) 
    else: 
      print('已存在!') 
  def query_person(self): 
    s = input('请输入要查找联系人名字的首字母:') 
    # s就是要查找的字典的key 
    if s not in self.ss_dict: 
      print('不存在') 
    else: 
      # 根据这个key取出字典中对应的值(列表) 
      s_list = self.ss_dict[s] 
      for index,name in enumerate(s_list): 
        print('序号:%s 姓名:%s' % (index,name)) 
      # for x in range(0,len(s_list)): 
      #   name = s_list[x] 
      #   print('序号:%s 姓名:%s'%(x,name)) 
    return s 
  def alter_person(self): 
    s= self.query_person() 
    index = int(input('请输入要修改联系人的序号:')) 
    new_name = input('输入更改后的名字(%s):'%self.ss_dict[s][index]) 
    del self.ss_dict[s][index] 
    s = new_name[0] 
    if s not in self.ss_dict: 
      self.ss_dict[s] = [new_name] 
    else: 
      s_list = self.ss_dict[s] 
      s_list.append(new_name) 
  def delete_person(self): 
    while len(self.ss_dict) == '0': 
      print('信息为空!') 
    print('1.根据名字删除') 
    print('2.全部删除') 
    print('0.退出') 
    num = int(input('输入序号:')) 
    while num not in range(0,3 ): 
      num = int(input('选项不存在,请重输:')) 
    if num == 1: 
      s = self.query_person() 
      index = int(input('请输入要删除联系人的序号:')) 
      rs = input('是否真的要删除,(y/n):') 
      if rs == 'y': 
        self.ss_dict[s].pop(index) 
        print('删除成功') 
      else: 
        print('取消删除') 
 
    elif num == 2: 
      rs = input('是否真的要删除,(y/n):') 
      if rs == 'y': 
        self.ss_dict.clear() 
        print('删除成功') 
      else: 
        print('取消删除') 
    else: 
      return 
  def start(self): 
    self.total() 
    while 1: 
      print('1.添加联系人') 
      print('2.查询联系人') 
      print('3.修改联系人') 
      print('4.删除联系人') 
      print('0.退出') 
      num = int(input('输入序号:')) 
      while num not in range(0,5): 
        num = int(input('选项不存在,请重输:')) 
      if num == 1: 
        self.add_person() 
      elif num == 2: 
        self.query_person() 
      elif num == 3: 
        self.alter_person() 
      elif num == 4: 
        self.delete_person() 
      else: 
        break 
 
p = PERSON() 
p.start()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
跟老齐学Python之正规地说一句话
Sep 28 Python
Python返回真假值(True or False)小技巧
Apr 10 Python
win7上python2.7连接mysql数据库的方法
Jan 14 Python
使用python实现tcp自动重连
Jul 02 Python
Python实现删除排序数组中重复项的两种方法示例
Jan 31 Python
python模拟菜刀反弹shell绕过限制【推荐】
Jun 25 Python
pandas基于时间序列的固定时间间隔求均值的方法
Jul 04 Python
Python3+PyInstall+Sciter解决报错缺少dll、html等文件问题
Jul 15 Python
pytorch方法测试——激活函数(ReLU)详解
Jan 15 Python
关于tensorflow softmax函数用法解析
Jun 30 Python
使用python实现下载我们想听的歌曲,速度超快
Jul 09 Python
python 如何获取页面所有a标签下href的值
May 06 Python
Python实现通讯录功能
Feb 22 #Python
Python SQLite3简介
Feb 22 #Python
Python Web程序部署到Ubuntu服务器上的方法
Feb 22 #Python
Python中 传递值 和 传递引用 的区别解析
Feb 22 #Python
centos 安装python3.6环境并配置虚拟环境的详细教程
Feb 22 #Python
windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)
Feb 21 #Python
Django中redis的使用方法(包括安装、配置、启动)
Feb 21 #Python
You might like
星际原理概述
2020/03/04 星际争霸
PHP 在线翻译函数代码
2009/05/07 PHP
关于PHP5.6+版本“No input file specified”问题的解决
2019/12/11 PHP
数组方法解决JS字符串连接性能问题有争议
2011/01/12 Javascript
鼠标移到导航当前位置的LI变色处于选中状态
2013/08/23 Javascript
jQuery获取当前点击的对象元素(实现代码)
2016/05/19 Javascript
vue-cli入门之项目结构分析
2017/04/20 Javascript
Vue组件实例间的直接访问实现代码
2017/08/20 Javascript
HTML5+JS+JQuery+ECharts实现异步加载问题
2017/12/16 jQuery
Vue cli构建及项目打包以及出现的问题解决
2018/08/27 Javascript
vue动态删除从数据库倒入列表的某一条方法
2018/09/29 Javascript
vue插件draggable实现拖拽移动图片顺序
2018/12/01 Javascript
关于JavaScript 数组你应该知道的事情(推荐)
2019/04/10 Javascript
JavaScript判断浏览器运行环境的详细方法
2019/06/30 Javascript
8 个有用的JS技巧(推荐)
2019/07/03 Javascript
JS随机密码生成算法
2019/09/23 Javascript
vue  elementUI 表单嵌套验证的实例代码
2019/11/06 Javascript
JavaScript实现拖拽效果
2020/03/16 Javascript
复制粘贴功能的Python程序
2008/04/04 Python
Python中进程和线程的区别详解
2017/10/29 Python
Python cookbook(数据结构与算法)根据字段将记录分组操作示例
2018/03/19 Python
python sys,os,time模块的使用(包括时间格式的各种转换)
2018/04/27 Python
tensorflow实现图像的裁剪和填充方法
2018/07/27 Python
wtfPython—Python中一组有趣微妙的代码【收藏】
2018/08/31 Python
selenium使用chrome浏览器测试(附chromedriver与chrome的对应关系表)
2018/11/29 Python
Python 实现文件打包、上传与校验的方法
2019/02/13 Python
PyCharm+Qt Designer+PyUIC安装配置教程详解
2019/06/13 Python
PyQT实现菜单中的复制,全选和清空的功能的方法
2019/06/17 Python
在win64上使用bypy进行百度网盘文件上传功能
2020/01/02 Python
Python实现结构体代码实例
2020/02/10 Python
trivago美国:全球最大的酒店价格比较网站
2018/01/18 全球购物
酒吧副总经理岗位职责
2013/12/10 职场文书
优秀会计求职信
2014/07/04 职场文书
四风自我剖析材料思想汇报
2014/10/01 职场文书
社区志愿服务活动感想
2015/08/07 职场文书
Python Pandas数据分析之iloc和loc的用法详解
2021/11/11 Python