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 13 Python
Python中关于字符串对象的一些基础知识
Apr 08 Python
Python实战小程序利用matplotlib模块画图代码分享
Dec 09 Python
Jupyter安装nbextensions,启动提示没有nbextensions库
Apr 23 Python
Python subprocess模块常见用法分析
Jun 12 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
Jun 14 Python
在pycharm中设置显示行数的方法
Jan 16 Python
Python 中PyQt5 点击主窗口弹出另一个窗口的实现方法
Jul 04 Python
django 环境变量配置过程详解
Aug 06 Python
python使用pandas抽样训练数据中某个类别实例
Feb 28 Python
python实现飞船游戏的纵向移动
Apr 24 Python
python使用matplotlib的savefig保存时图片保存不完整的问题
Jan 08 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在服务器执行exec命令失败的解决方法
2012/03/03 PHP
使用php判断网页是否gzip压缩
2013/06/25 PHP
分享php分页的功能模块
2015/06/16 PHP
如何把php5.3版本升级到php5.4或者php5.5
2015/07/31 PHP
PHP策略模式定义与用法示例
2017/07/27 PHP
jQuery formValidator表单验证插件开源了 含API帮助、源码、示例
2008/08/14 Javascript
用JQuery 实现AJAX加载XML并解析的脚本
2009/07/25 Javascript
防止页面被iframe(兼容IE,Firefox火狐)
2010/07/04 Javascript
jquery插件之easing使用
2010/08/19 Javascript
jquery ui dialog实现弹窗特效的思路及代码
2013/08/03 Javascript
获取非最后一列td值并将title设为该值的方法
2013/10/30 Javascript
js 判断文件类型并控制表单提交示例代码
2013/11/14 Javascript
JS实现获取剪贴板内容的方法
2016/06/21 Javascript
AngularJS基础 ng-paste 指令简单示例
2016/08/02 Javascript
Google 地图API Map()构造器详解
2016/08/06 Javascript
js实现做通讯录的索引滑动显示效果和滑动显示锚点效果
2017/02/18 Javascript
微信小程序实现皮肤功能(夜间模式)
2017/06/18 Javascript
JS中使用gulp实现压缩文件及浏览器热加载功能
2017/07/12 Javascript
React通过redux-persist持久化数据存储的方法示例
2019/02/14 Javascript
解决vux 中popup 组件Mask 遮罩在最上层的问题
2020/11/03 Javascript
如何在vue 中使用柱状图 并自修改配置
2021/01/21 Vue.js
总结网络IO模型与select模型的Python实例讲解
2016/06/27 Python
pandas 对series和dataframe进行排序的实例
2018/06/09 Python
Python使用numpy产生正态分布随机数的向量或矩阵操作示例
2018/08/22 Python
对python内置map和six.moves.map的区别详解
2018/12/19 Python
Pandas之ReIndex重新索引的实现
2019/06/25 Python
Django上使用数据可视化利器Bokeh解析
2019/07/31 Python
Python Django框架防御CSRF攻击的方法分析
2019/10/18 Python
关于numpy中eye和identity的区别详解
2019/11/29 Python
Python搭建HTTP服务过程图解
2019/12/14 Python
python生成任意频率正弦波方式
2020/02/25 Python
奥斯汀独木舟和皮划艇:Austin Canoe & Kayak
2018/05/22 全球购物
应聘收银员个人的求职信
2013/11/30 职场文书
县委班子四风对照检查材料思想汇报
2014/09/29 职场文书
MySQL面试题讲解之如何设置Hash索引
2021/11/01 MySQL
win11怎么用快捷键锁屏? windows11锁屏的几种方法
2021/11/21 数码科技