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 相关文章推荐
pyqt4教程之实现windows窗口小示例分享
Mar 07 Python
在Python的Django框架中加载模版的方法
Jul 16 Python
理解Python垃圾回收机制
Feb 12 Python
解决python os.mkdir创建目录失败的问题
Oct 16 Python
对python捕获ctrl+c手工中断程序的两种方法详解
Dec 26 Python
Python实现二叉搜索树BST的方法示例
Jul 30 Python
Python使用selenium + headless chrome获取网页内容的方法示例
Oct 16 Python
Python使用Numpy模块读取文件并绘制图片
May 13 Python
Python测试框架:pytest学习笔记
Oct 20 Python
Python析构函数__del__定义原理解析
Nov 20 Python
python实现双人五子棋(终端版)
Dec 30 Python
Python中的 No Module named ***问题及解决
Jul 23 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 获取客户端的真实ip
2009/11/30 PHP
php调整gif动画图片尺寸示例代码分享
2013/12/05 PHP
PHP从FLV文件获取视频预览图的方法
2015/03/12 PHP
php从完整文件路径中分离文件目录和文件名的方法
2015/03/13 PHP
PHP中array_keys和array_unique函数源码的分析
2016/02/26 PHP
PHP strcmp()和strcasecmp()的区别实例
2016/11/05 PHP
Yii1.1框架实现PHP极光推送消息通知功能
2018/09/06 PHP
jquery 多级下拉菜单核心代码
2010/05/21 Javascript
js获取height和width的方法说明
2013/01/06 Javascript
用jquery实现输入框获取焦点消失文字
2013/04/27 Javascript
checkbox使用示例
2013/08/23 Javascript
JavaScript加强之自定义callback示例
2013/09/21 Javascript
jQuery 实现侧边浮动导航菜单效果
2014/12/26 Javascript
Javascript writable特性介绍
2015/02/27 Javascript
js实现div在页面拖动效果
2016/05/04 Javascript
jquery append与appendTo方法比较
2017/05/24 jQuery
vue.js移动端tab组件的封装实践实例
2017/06/30 Javascript
jQuery选择器中的特殊符号处理方法
2017/09/08 jQuery
微信小程序getPhoneNumber获取用户手机号
2017/09/29 Javascript
layer.open弹层查看缩略图的原图,自适应大小的实例
2019/09/05 Javascript
基于javascript实现碰撞检测
2020/03/12 Javascript
python3实现mysql导出excel的方法
2019/07/31 Python
Python&&GDAL实现NDVI的计算方式
2020/01/09 Python
Python中断多重循环的几种方式详解
2020/02/10 Python
django 数据库 get_or_create函数返回值是tuple的问题
2020/05/15 Python
python使用自定义钉钉机器人的示例代码
2020/06/24 Python
python爬虫中采集中遇到的问题整理
2020/11/27 Python
css3动画事件—webkitAnimationEnd与计时器time事件
2013/01/31 HTML / CSS
CSS3实现多样的边框效果
2018/05/04 HTML / CSS
内容编辑个人求职信
2013/12/10 职场文书
秋季婚礼证婚词
2014/01/11 职场文书
建筑施工安全责任书
2014/07/24 职场文书
离婚协议书范本(2014版)
2014/09/28 职场文书
2014年留守儿童工作总结
2014/12/10 职场文书
2015年暑期社会实践方案
2015/07/14 职场文书
抖音动画片,皮皮虾,《治愈系》动画在用这首REMIX作为背景音乐,Anak ,The last world with you完整版
2022/03/16 杂记