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中获取div的文本内容并和想定结果进行对比详解
Jan 02 Python
Python设计模式之代理模式实例详解
Jan 19 Python
python操作日志的封装方法(两种方法)
May 23 Python
Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
Oct 12 Python
Python collections中的双向队列deque简单介绍详解
Nov 04 Python
python双端队列原理、实现与使用方法分析
Nov 27 Python
使用python-opencv读取视频,计算视频总帧数及FPS的实现
Dec 10 Python
使用python 对验证码图片进行降噪处理
Dec 18 Python
python boto和boto3操作bucket的示例
Oct 30 Python
怎么用Python识别手势数字
Jun 07 Python
Pytorch可视化的几种实现方法
Jun 10 Python
Python 第三方库 openpyxl 的安装过程
Dec 24 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
PHP程序员最常犯的11个MySQL错误小结
2010/11/20 PHP
php 搜索框提示(自动完成)实例代码
2012/02/05 PHP
解析数组非数字键名引号的必要性
2013/08/09 PHP
php mail to 配置详解
2014/01/16 PHP
WordPress中给文章添加自定义字段及后台编辑功能区域
2015/12/19 PHP
使用Apache的rewrite
2021/03/09 Servers
初学prototype,发个JS接受URL参数的代码
2006/09/25 Javascript
超越Jquery_01_isPlainObject分析与重构
2010/10/20 Javascript
nodejs 后缀名判断限制代码
2011/03/31 NodeJs
javascript读写json示例
2014/04/11 Javascript
jQuery的one()方法用法实例
2015/01/19 Javascript
javascript实现根据时间段显示问候语的方法
2015/06/18 Javascript
jquery属性,遍历,HTML操作方法详解
2016/09/17 Javascript
浅谈Node.js:Buffer模块
2016/12/05 Javascript
JS求解三元一次方程组值的方法
2017/01/03 Javascript
Swiper 4.x 使用方法(移动端网站的内容触摸滑动)
2018/05/17 Javascript
React 源码中的依赖注入方法
2018/11/07 Javascript
Vue 使用Props属性实现父子组件的动态传值详解
2019/11/13 Javascript
修改vue源码实现动态路由缓存的方法
2020/01/21 Javascript
[01:05:56]2018DOTA2亚洲邀请赛3月29日 小组赛A组 Newbee VS VG
2018/03/30 DOTA
python实现数据写入excel表格
2018/03/25 Python
Flask入门之上传文件到服务器的方法示例
2018/07/18 Python
详解Python使用Plotly绘图工具,绘制甘特图
2019/04/02 Python
python制作填词游戏步骤详解
2019/05/05 Python
详解Python 切片语法
2019/06/10 Python
Python Web框架之Django框架Model基础详解
2019/08/16 Python
对Python 中矩阵或者数组相减的法则详解
2019/08/26 Python
详解Django自定义图片和文件上传路径(upload_to)的2种方式
2020/12/01 Python
Schecker荷兰:狗狗用品和配件
2019/06/06 全球购物
请假条格式范文
2014/04/10 职场文书
优秀班组长事迹
2014/05/31 职场文书
课前一分钟演讲稿
2014/08/26 职场文书
客户经理岗位职责大全
2015/04/09 职场文书
二十年同学聚会致辞
2015/07/28 职场文书
2016父亲节感恩话语
2015/12/09 职场文书
SQL模糊查询报:ORA-00909:参数个数无效问题的解决
2021/06/21 Oracle