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 enumerate遍历数组示例应用
Sep 06 Python
不可错过的十本Python好书
Jul 06 Python
python安装numpy&安装matplotlib& scipy的教程
Nov 02 Python
Python实现嵌套列表去重方法示例
Dec 28 Python
Python装饰器语法糖
Jan 02 Python
对python文件读写的缓冲行为详解
Feb 13 Python
使用virtualenv创建Python环境及PyQT5环境配置的方法
Sep 10 Python
Python+numpy实现矩阵的行列扩展方式
Nov 29 Python
windows下Pycharm安装opencv的多种方法
Mar 05 Python
Selenium 滚动页面至元素可见的方法
Mar 18 Python
浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点
Jun 08 Python
python关于倒排列的知识点总结
Oct 13 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与XML联手进行网站编程代码实例
2008/07/10 PHP
完美解决PHP中的Cannot modify header information 问题
2013/08/12 PHP
ThinkPHP3.1新特性之动态设置自动完成及自动验证示例代码
2014/06/23 PHP
php异步:在php中使用fsockopen curl实现类似异步处理的功能方法
2016/12/10 PHP
PHP实现的AES加密、解密封装类与用法示例
2018/08/02 PHP
js 判断一个元素是否在页面中存在
2012/12/27 Javascript
JavaScript编程中容易出BUG的几点小知识
2015/01/31 Javascript
使用JQuery FancyBox插件实现图片展示特效
2015/11/16 Javascript
jQuery时间插件jquery.clock.js用法实例(5个示例)
2016/01/14 Javascript
js实现二级导航功能
2017/03/03 Javascript
bootstrap基本配置_动力节点Java学院整理
2017/07/14 Javascript
在create-react-app中使用css modules的示例代码
2018/07/31 Javascript
javaScript代码飘红报错看不懂?读完这篇文章再试试
2020/08/19 Javascript
python实现图片变亮或者变暗的方法
2015/06/01 Python
Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例
2017/08/21 Python
Python数据集切分实例
2018/12/08 Python
PyQt4 treewidget 选择改变颜色,并设置可编辑的方法
2019/06/17 Python
python调用c++返回带成员指针的类指针实例
2019/12/12 Python
详解有关PyCharm安装库失败的问题的解决方法
2020/02/02 Python
python中JWT用户认证的实现
2020/05/18 Python
详解tensorflow2.x版本无法调用gpu的一种解决方法
2020/05/25 Python
Keras中 ImageDataGenerator函数的参数用法
2020/07/03 Python
详细分析Python可变对象和不可变对象
2020/07/09 Python
接口自动化多层嵌套json数据处理代码实例
2020/11/20 Python
html5 迷宫游戏(碰撞检测)实例一
2013/07/25 HTML / CSS
凯特王妃父母建立的派对用品网站:Party Pieces
2017/05/28 全球购物
Nike澳大利亚官网:Nike.com (AU)
2019/06/03 全球购物
嘻哈珠宝品牌:KRKC&CO
2020/10/19 全球购物
机械设计职业生涯规划书
2013/12/27 职场文书
高二美术教学反思
2014/01/14 职场文书
宿舍违规用电检讨书
2014/02/16 职场文书
保密工作责任书
2014/04/16 职场文书
中学生演讲稿
2014/04/26 职场文书
检查机关党的群众路线个人整改措施
2014/10/04 职场文书
2014财务部年度工作总结
2014/12/08 职场文书
先进个人评语大全
2015/01/04 职场文书