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操作sqlite3快速、安全插入数据(防注入)的实例
Apr 26 Python
Python多线程编程(一):threading模块综述
Apr 05 Python
python中enumerate函数用法实例分析
May 20 Python
Python按行读取文件的简单实现方法
Jun 22 Python
python基于pyDes库实现des加密的方法
Apr 29 Python
详解Python 爬取13个旅游城市,告诉你五一大家最爱去哪玩?
May 07 Python
python处理excel绘制雷达图
Oct 18 Python
Python列表原理与用法详解【创建、元素增加、删除、访问、计数、切片、遍历等】
Oct 30 Python
Python上下文管理器全实例详解
Nov 12 Python
python读取与处理netcdf数据方式
Feb 14 Python
python matplotlib 绘图 和 dpi对应关系详解
Mar 14 Python
Python3爬虫中关于Ajax分析方法的总结
Jul 10 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实现ping
2006/10/09 PHP
php empty,isset,is_null判断比较(差异与异同)
2010/10/19 PHP
Yii实现多按钮保存与提交的方法
2014/12/03 PHP
php购物车实现方法
2015/01/03 PHP
php输出指定时间以前时间格式的方法
2015/03/21 PHP
PHP实现批量删除(封装)
2017/04/28 PHP
js技巧--转义符"\"的妙用
2007/01/09 Javascript
Javascript 面向对象 重载
2010/05/13 Javascript
基于jquery的监控数据是否发生改变
2011/04/11 Javascript
JS中的public和private对象,即static修饰符
2012/01/18 Javascript
获取3个数组不重复的值的具体实现
2013/12/30 Javascript
js中的for如何实现foreach中的遍历
2014/05/31 Javascript
谈谈JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)
2015/10/01 Javascript
js学习阶段总结(必看篇)
2016/06/16 Javascript
动态JavaScript所造成一些你不知道的危害
2016/09/25 Javascript
Form表单按回车自动提交表单的实现方法
2016/11/18 Javascript
前端编码规范(3)JavaScript 开发规范
2017/01/21 Javascript
在 vue-cli v3.0 中使用 SCSS/SASS的方法
2018/06/14 Javascript
详解JavaScript事件循环机制
2018/09/07 Javascript
js实现input密码框显示/隐藏功能
2020/09/10 Javascript
JavaScript页面加载事件实例讲解
2019/09/01 Javascript
原生javascript中this几种常见用法总结
2020/02/24 Javascript
JS闭包原理及其使用场景解析
2020/12/03 Javascript
JavaScript this关键字的深入详解
2021/01/14 Javascript
[01:00:54]TI4正赛第二日开场
2014/07/20 DOTA
Python抓取手机号归属地信息示例代码
2016/11/28 Python
使用Python 统计高频字数的方法
2019/01/31 Python
Python OOP类中的几种函数或方法总结
2019/02/22 Python
python如何统计代码运行的时长
2019/07/24 Python
Python爬虫程序架构和运行流程原理解析
2020/03/09 Python
HTML5+JS实现俄罗斯方块原理及具体步骤
2013/11/29 HTML / CSS
区域销售经理岗位职责
2013/12/10 职场文书
学校后勤岗位职责
2014/02/19 职场文书
求职自荐信怎么写
2014/03/06 职场文书
项目申报专员岗位职责
2014/07/09 职场文书
浅析Python OpenCV三种滤镜效果
2022/04/11 Python