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写的服务监控程序实例
Jan 31 Python
简单介绍Python中用于求最小值的min()方法
May 15 Python
Python实现中文数字转换为阿拉伯数字的方法示例
May 26 Python
Python smtplib实现发送邮件功能
May 22 Python
Python使用matplotlib和pandas实现的画图操作【经典示例】
Jun 13 Python
Django url,从一个页面调到另个页面的方法
Aug 21 Python
三个python爬虫项目实例代码
Dec 28 Python
python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法
Feb 26 Python
python实现俄罗斯方块游戏(改进版)
Mar 13 Python
Python中and和or如何使用
May 28 Python
通过Python把学姐照片做成拼图游戏
Feb 15 Python
Python超详细分步解析随机漫步
Mar 17 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快速url重写更新版[需php 5.30以上]
2010/04/25 PHP
php实现基于pdo的事务处理方法示例
2017/07/21 PHP
tp5框架使用composer实现日志记录功能示例
2019/01/10 PHP
PhpStorm配置Xdebug调试的方法步骤
2019/02/02 PHP
PHP使用DOM对XML解析处理操作示例
2019/07/04 PHP
iframe的onload在Chrome/Opera中执行两次Bug的解决方法
2011/03/17 Javascript
js数组Array sort方法使用深入分析
2013/02/21 Javascript
jquery实现漂浮在网页右侧的qq在线客服插件示例
2013/05/13 Javascript
JS获取DropDownList的value值与text值的示例代码
2014/01/07 Javascript
jquery append 动态添加的元素事件on 不起作用的解决方案
2015/07/30 Javascript
浅析JavaScript中浏览器的兼容问题
2016/04/19 Javascript
jquery层级选择器的实现(匹配后代元素div)
2016/09/05 Javascript
js实现表格筛选功能
2017/01/18 Javascript
Angular1.x复杂指令实例详解
2017/03/01 Javascript
JavaScript使用链式方法封装jQuery中CSS()方法示例
2017/04/07 jQuery
JavaScript实现带有子菜单和控件的slider轮播图效果
2017/11/01 Javascript
Node.js连接Sql Server 2008及数据层封装详解
2018/08/27 Javascript
对vue下点击事件传参和不传参的区别详解
2018/09/15 Javascript
开发用到的js封装方法(20种)
2018/10/12 Javascript
vue 全局环境切换问题
2019/10/27 Javascript
jQuery实现可编辑的表格
2019/12/11 jQuery
浅析JavaScript预编译和暗示全局变量
2020/09/03 Javascript
Python 列表(List) 的三种遍历方法实例 详解
2017/04/15 Python
新手常见6种的python报错及解决方法
2018/03/09 Python
详解Django之auth模块(用户认证)
2018/04/17 Python
Python3正则匹配re.split,re.finditer及re.findall函数用法详解
2018/06/11 Python
Python列表对象实现原理详解
2019/07/01 Python
浅谈pycharm使用及设置方法
2019/09/09 Python
Lands’ End官网:经典的美国生活方式品牌
2016/08/14 全球购物
LINUX下线程,GDI类的解释
2016/12/14 面试题
公司董事长助理工作职责
2014/07/12 职场文书
2014企业年终工作总结
2014/12/23 职场文书
三年级学生评语大全
2014/12/26 职场文书
环卫处个人工作总结
2015/03/04 职场文书
我的长征观后感
2015/06/09 职场文书
4种非常实用的python内置数据结构
2021/04/28 Python