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 代码性能优化技巧分享
Aug 07 Python
Python中字符串对齐方法介绍
May 21 Python
python实现红包裂变算法
Feb 16 Python
python批量制作雷达图的实现方法
Jul 26 Python
django 在原有表格添加或删除字段的实例
May 27 Python
python实现根据文件关键字进行切分为多个文件的示例
Dec 10 Python
深入理解Django-Signals信号量
Feb 19 Python
python查找重复图片并删除(图片去重)
Jul 16 Python
利用Python检测URL状态
Jul 31 Python
使用Python完成15位18位身份证的互转功能
Nov 06 Python
tensorflow使用CNN分析mnist手写体数字数据集
Jun 17 Python
Django基于Models定制Admin后台实现过程解析
Nov 11 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
WHOIS类的修改版
2006/10/09 PHP
php去除HTML标签实例
2013/11/06 PHP
php使用GeoIP库实例
2014/06/27 PHP
PHP实现小偷程序实例
2016/10/31 PHP
thinkPHP模板引擎用法示例
2016/12/08 PHP
phpcms实现验证码替换及phpcms实现全站搜索功能教程详解
2017/12/13 PHP
如何使用jquery控制CSS样式,并且取消Css样式(如背景色,有实例)
2013/07/09 Javascript
JS操作数据库的实例代码
2013/10/17 Javascript
Javascript实现禁止输入中文或英文的例子
2014/12/09 Javascript
node.js中的fs.chownSync方法使用说明
2014/12/16 Javascript
WebGL利用FBO完成立方体贴图效果完整实例(附demo源码下载)
2016/01/26 Javascript
浅谈sass在vue注意的地方
2017/08/10 Javascript
JS排序算法之希尔排序与快速排序实现方法
2017/12/12 Javascript
node错误处理与日志记录的实现
2018/12/24 Javascript
如何优雅地在vue中添加权限控制示例详解
2019/03/07 Javascript
7个好用的JavaScript技巧分享(译)
2019/05/07 Javascript
v-slot和slot、slot-scope之间相互替换实例
2020/09/04 Javascript
js实现特别简单的钟表效果
2020/09/14 Javascript
[02:57]DOTA2亚洲邀请赛小组赛第四日 赛事回顾
2015/02/02 DOTA
[05:40]DOTA2荣耀之路6:Wings最后进攻
2018/05/30 DOTA
python实现封装得到virustotal扫描结果
2014/10/05 Python
利用Python获取操作系统信息实例
2016/09/02 Python
Python 专题五 列表基础知识(二维list排序、获取下标和处理txt文本实例)
2017/03/20 Python
python爬虫实战之爬取京东商城实例教程
2017/04/24 Python
python中利用队列asyncio.Queue进行通讯详解
2017/09/10 Python
详解将Django部署到Centos7全攻略
2018/09/26 Python
python读取ini配置文件过程示范
2019/12/23 Python
详解Python的三种拷贝方式
2020/02/11 Python
H5最强接口之canvas实现动态图形功能
2019/05/31 HTML / CSS
美国生日蛋糕店:Bake Me A Wish!
2017/02/08 全球购物
项目经理的岗位职责
2013/11/23 职场文书
会议室标语
2014/06/21 职场文书
5s标语大全
2014/06/23 职场文书
借条如何写
2015/05/26 职场文书
运动会宣传稿50字
2015/07/23 职场文书
《分一些蚊子进来》读后感3篇
2020/01/09 职场文书