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程序员开发中常犯的10个错误
Jul 07 Python
Python科学计算之NumPy入门教程
Jan 15 Python
django开发教程之利用缓存文件进行页面缓存的方法
Nov 10 Python
python设置值及NaN值处理方法
Jul 03 Python
对python调用RPC接口的实例详解
Jan 03 Python
详解Python安装tesserocr遇到的各种问题及解决办法
Mar 07 Python
计算机二级python学习教程(1) 教大家如何学习python
May 16 Python
python使用paramiko实现ssh的功能详解
Mar 06 Python
如何创建一个Flask项目并进行简单配置
Nov 18 Python
基于Python采集爬取微信公众号历史数据
Nov 27 Python
Python常用GUI框架原理解析汇总
Dec 07 Python
python使用pygame创建精灵Sprite
Apr 06 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 函数学习简单小结
2010/07/08 PHP
非常实用的PHP常用函数汇总
2014/12/17 PHP
jQuery源码分析-01总体架构分析
2011/11/14 Javascript
jquery简单的拖动效果实现原理及示例
2013/07/26 Javascript
jquery ready(fn)事件使用介绍
2013/08/21 Javascript
Angularjs实现多个页面共享数据的方式
2016/03/29 Javascript
微信小程序 数组中的push与concat的区别
2017/01/05 Javascript
vee-validate vue 2.0自定义表单验证的实例
2018/08/28 Javascript
vue给组件传递不同的值方法
2018/09/29 Javascript
vue webpack打包后图片路径错误的完美解决方法
2018/12/07 Javascript
如何在Vue中使用CleaveJS格式化你的输入内容
2018/12/14 Javascript
详解vue后台系统登录态管理
2019/04/02 Javascript
JavaScript多种页面刷新方法小结
2019/04/04 Javascript
微信小程序实现授权登录
2019/05/15 Javascript
微信小程序代码上传、审核发布小程序
2019/05/18 Javascript
移动端底部导航固定配合vue-router实现组件切换功能
2019/06/13 Javascript
微信小程序 生成携带参数的二维码
2019/10/23 Javascript
js实现星星打分效果
2020/07/05 Javascript
javascript实现倒计时关闭广告
2021/02/09 Javascript
[02:47]DOTA2英雄基础教程 野性怒吼兽王
2013/12/05 DOTA
Python访问纯真IP数据库脚本分享
2015/06/29 Python
Python简单实现TCP包发送十六进制数据的方法
2016/04/16 Python
Python内建函数之raw_input()与input()代码解析
2017/10/26 Python
关于python列表增加元素的三种操作方法
2018/08/22 Python
在PyCharm中批量查找及替换的方法
2019/01/20 Python
python 将对象设置为可迭代的两种实现方法
2019/01/21 Python
通过PHP与Python代码对比的语法差异详解
2019/07/10 Python
tensorflow模型转ncnn的操作方式
2020/05/25 Python
如何使用Python调整图像大小
2020/09/26 Python
python 下划线的不同用法
2020/10/24 Python
通过实例解析python and和or使用方法
2020/11/14 Python
CSS3弹性布局内容对齐(justify-content)属性使用详解
2017/07/31 HTML / CSS
英国最大的汽车配件在线商店:Euro Car Parts
2019/09/30 全球购物
迎新生欢迎词2015
2015/07/16 职场文书
JUnit5常用注解的使用
2021/07/02 Java/Android
动画「半妖的夜叉姬」新BD特典图公开
2022/03/22 日漫