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 相关文章推荐
pygame学习笔记(3):运动速率、时间、事件、文字
Apr 15 Python
Python实现信用卡系统(支持购物、转账、存取钱)
Jun 24 Python
Python 类的继承实例详解
Mar 25 Python
解决python使用open打开文件中文乱码的问题
Dec 29 Python
python+opencv轮廓检测代码解析
Jan 05 Python
浅谈python正则的常用方法 覆盖范围70%以上
Mar 14 Python
python如何在列表、字典中筛选数据
Mar 19 Python
Python中文件的读取和写入操作
Apr 27 Python
python操作xlsx文件的包openpyxl实例
May 03 Python
Pandas分组与排序的实现
Jul 23 Python
python中必要的名词解释
Nov 20 Python
Python 分布式缓存之Reids数据类型操作详解
Jun 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和ACCESS写聊天室(三)
2006/10/09 PHP
php实现的任意进制互转类分享
2015/07/07 PHP
PHP 类与构造函数解析
2017/02/06 PHP
不使用XMLHttpRequest实现异步加载 Iframe和script
2012/10/29 Javascript
IE下window.onresize 多次调用与死循环bug处理方法介绍
2013/11/12 Javascript
js获得页面的高度和宽度的方法
2014/02/23 Javascript
js兼容火狐获取图片宽和高的方法
2015/05/21 Javascript
jQuery实现的fixedMenu下拉菜单效果代码
2015/08/24 Javascript
JS给Array添加是否包含字符串的简单方法
2016/10/29 Javascript
利用浮层使select不可选的实现方法
2016/12/03 Javascript
jQuery插件FusionCharts实现的2D饼状图效果【附demo源码下载】
2017/03/03 Javascript
vue一个页面实现音乐播放器的示例
2018/02/06 Javascript
关于TypeScript模块导入的那些事
2018/06/12 Javascript
vue+element-ui集成随机验证码+用户名+密码的form表单验证功能
2018/08/05 Javascript
jQuery使用$.extend(true,object1, object2);实现深拷贝对象的方法分析
2019/03/06 jQuery
在NPM发布自己造的轮子的方法步骤
2019/03/09 Javascript
微信小程序的线程架构【推荐】
2019/05/14 Javascript
Ant design vue table 单击行选中 勾选checkbox教程
2020/10/24 Javascript
[01:20]PWL S2开团时刻第三期——团战可以输 蝙蝠必须死
2020/11/26 DOTA
python进阶教程之文本文件的读取和写入
2014/08/29 Python
Python pycharm 同时加载多个项目的方法
2019/01/17 Python
Django 博客实现简单的全文搜索的示例代码
2020/02/17 Python
Python实现ElGamal加密算法的示例代码
2020/06/19 Python
QT5 Designer 打不开的问题及解决方法
2020/08/20 Python
matplotlib设置颜色、标记、线条,让你的图像更加丰富(推荐)
2020/09/25 Python
使用Python通过oBIX协议访问Niagara数据的示例
2020/12/04 Python
基于CSS3 animation动画属性实现轮播图效果
2017/09/12 HTML / CSS
使用纯 CSS 创作一个脉动 loader效果的源码
2018/09/28 HTML / CSS
Room Mate Hotels美国:西班牙酒店品牌
2018/04/10 全球购物
车库门开启器、遥控器和零件:Chamberlain
2019/04/09 全球购物
澳大利亚有机化妆品网上商店:The Well Store
2020/02/20 全球购物
说一下Linux下有关用户和组管理的命令
2014/08/18 面试题
《青海高原一株柳》教学反思
2014/04/25 职场文书
党的群众路线教育实践方案
2014/05/11 职场文书
幼儿园安全工作总结2015
2015/04/20 职场文书
Node.js实现爬取网站图片的示例代码
2022/04/04 NodeJs