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实现忽略大小写对字符串列表排序的方法
Sep 25 Python
python中常用检测字符串相关函数汇总
Apr 15 Python
由Python运算π的值深入Python中科学计算的实现
Apr 17 Python
在Python中操作时间之mktime()方法的使用教程
May 22 Python
python执行子进程实现进程间通信的方法
Jun 02 Python
Python三级目录展示的实现方法
Sep 28 Python
利用python画一颗心的方法示例
Jan 31 Python
pandas 两列时间相减换算为秒的方法
Apr 20 Python
python保存数据到本地文件的方法
Jun 23 Python
Django单元测试中Fixtures用法详解
Feb 25 Python
在pytorch中动态调整优化器的学习率方式
Jun 24 Python
pandas按条件筛选数据的实现
Feb 20 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初学者头痛的十四个问题
2006/07/12 PHP
yii框架配置默认controller和action示例
2014/04/30 PHP
PHP遍历XML文档所有节点的方法
2015/03/12 PHP
nginx下安装php7+php5
2016/07/31 PHP
laravel-admin的多级联动方法
2019/09/30 PHP
Avengerls vs KG BO3 第二场2.18
2021/03/10 DOTA
Extjs学习笔记之四 工具栏和菜单
2010/01/07 Javascript
Js 时间间隔计算的函数(间隔天数)
2011/11/15 Javascript
js获取当前路径的简单示例代码
2014/01/08 Javascript
使用JS实现图片展示瀑布流效果的实例代码
2016/09/12 Javascript
JS 拦截全局ajax请求实例解析
2016/11/29 Javascript
jQuery为DOM动态追加事件的方法
2017/02/16 Javascript
JS三目运算(三元运算)方法详解
2017/03/01 Javascript
文本溢出插件jquery.dotdotdot.js使用方法详解
2017/06/22 jQuery
利用HBuilder打包前端开发webapp为apk的方法
2017/11/13 Javascript
9种使用Chrome Firefox 自带调试工具调试javascript技巧
2017/12/22 Javascript
vue实现带复选框的树形菜单
2019/05/27 Javascript
JS实现动态添加外部js、css到head标签的方法
2019/06/05 Javascript
TypeScript高级用法的知识点汇总
2019/12/17 Javascript
javascript 设计模式之组合模式原理与应用详解
2020/04/08 Javascript
[03:43]2014DOTA2西雅图国际邀请赛 newbee战队巡礼
2014/07/07 DOTA
Python如何import文件夹下的文件(实现方法)
2017/01/24 Python
Python多线程编程之多线程加锁操作示例
2018/09/06 Python
Python中几种属性访问的区别与用法详解
2018/10/10 Python
Python实现的爬取小说爬虫功能示例
2019/03/30 Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
2019/06/21 Python
python实现动态创建类的方法分析
2019/06/25 Python
python根据完整路径获得盘名/路径名/文件名/文件扩展名的方法
2020/04/22 Python
django教程如何自学
2020/07/31 Python
深入浅出CSS3 background-clip,background-origin和border-image教程
2011/01/27 HTML / CSS
经典c++面试题五
2014/12/17 面试题
文秘专业毕业生就业推荐信
2013/11/08 职场文书
数控专业大学毕业生职业规划范文
2014/02/06 职场文书
促销活动方案模板
2014/02/24 职场文书
黑暗中的舞者观后感
2015/06/18 职场文书
2015年国庆放假通知范文
2015/08/18 职场文书