• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Python 实现简单的电话本功能

python 搞代码 4年前 (2022-01-09) 38次浏览 已收录 0个评论

myPhoneBook2.py

#!/usr/bin/python# -*- coding: utf-8 -*-import reclass PhoneBook(object):  '''这是一个电话簿脚本。  该脚本能够实现  AddContact:添加联系人信息  ShowContact:查找姓名显示联系人  SaveContacts:存储联系人到 TXT 文档(存储格式——姓名:号码/号码)  LoadContacts:从 txt 文档中载入联系人  '''  def __init__(self):    self.contactsDict = {}  def AddContact(self):    while True:      name = raw_input('请输入姓名>>>')      name = name.strip()      # 姓名必须包含有效字符      if name != '':        break      print '***姓名不能为空'           while True:      number = raw_input('请输入号码>>>')      number = re.sub(r'\D', '', number)      # 删除号码中的非数字字符      if number != '':        break      print '***号码只能是数字'    cover = True #若联系人已存在,是否覆盖    if self.contactsDict.has_key(name):      print '***联系人已存在'      self.ShowContact(name)      while True:        control = raw_input('''输入 "c":覆盖原来号码输入 "n":保留原来号码并存储新号码输入 "q" 退出\n>>>''')        if control.lower() == 'n':          cover = False          break        if control.lower() == 'c':          break        if control.lower() == 'q':          return None        print '***输入错误'         if cover:      self.contactsDict[name] = number    else:      if number in self.contactsDict[name]:        print '***号码已经存在'      else:        self.contactsDict[name] = self.contactsDict[name] + '/' + number  def ShowContact(self, name):    print '++++++++++++++++++++++++'    if self.contactsDict.has_key(name):      print '【联系人信息】'      print '【姓名: %s】' % name      numberList = self.contactsDict[name].split('/')      for num in range(len(numberList)):        print '【号码%d: %s】' % (num+1, numberList[num])         else:      print '【找不到联系人%s】' % name    print '++++++++++++++++++++++++'     def DeleteNumber(self, name):    if self.contactsDict.has_key(name):      self.ShowContact(name)      number = self.contactsDict[name].split('/')      while True:        print '''请输入要删除号码的序号或者输入 "a" 删除该联系人或者输入 "q" 退出(不删除)(若联系人号码被全部删除,该联系人也将被删除)'''        control = raw_input('>>>')        if control.lower() == 'q':          break        elif control.lower() == 'a':          del self.contactsDict[name]          break        elif control.isdigit() and int(control) >>')      if control.lower() == 'a':        myPhoneBook.AddContact()      elif control.lower() == 's':        name = raw_input('请输入要查找的联系人姓名\n>>>')        myPhoneBook.ShowContact(name)      elif control.lower() == 'd':        name = raw_input('请输入要删除的联系人姓名\n>>>')        myPhoneBook.DeleteNumber(name)      elif control.lower() == 'q':        break      else:        print '***输入有误'         finally:    myPhoneBook.SaveContacts()

花了一个下午和半个晚上写了这个简单通讯录:
哈哈,第一次写这么长的Python代码,自认为结构还是挺合理的。
代码如下:

#-*- coding:utf-8 -*- # file :addrList.py # date :2011-10-24 15:40:13 # 设计一个基本的通讯录管理程序,使其具有添加,删除,编辑,查找等功能。 # 要求使用C/C++,java,javascript,python中任意一种语言实现。字符界面即可。 # 不需要有GUI(图形界面) import sys import os import string import re from datetime import datetime  QUIT_FLAG = False ADDRS_LIST = "addr_list.txt" _addrs_dict = {}  _addrs_count = 0 DEBUG=2 def info(message):   global DEBUG   if DEBUG > 0:     print message  def debug(message):   global DEBUG   if DEBUG > 1:     print message  def warn(message):   global DEBUG   if DEBUG > 0:     print message    def error(message):   print message  def help():   print "用法:输入菜单中的命令即可执行相应操作!"   print "可用菜单命令如下:"   showMenu()  def showMenu():   print "+******************操作菜单***********************+"   print "|查看所有联系人(all) | 查找联系人(find)      |"   print "|添加联系人(add)   | 删除联系人(remove)     |"   print "|编辑联系人(edit)  | 保存并退出(save)      |"   print "|使用帮助(help)   | 退出但不保存(quit)     |"   print "+_________________________________________________+"  def showError(info):   print info   def doSwitch(op):   if op == "all":     doAll()   elif op == "find":     doFind()   elif op == "add":     doAdd()   elif op == "remove":     doRemove()   elif op == "edit":     doEdit()   elif op == "save":     doSave()   elif op == "help":     help()   elif op == "quit":     doQuit()   else:     showError("错误:您输入的命令有误,请重新输入。需要帮助请输入help!")  def verifyInput(items):   _flag = True   _rPhone = re.compile(r'1[0-9]{10}')   _rQQ  = re.compile(r'[1-9][0-9]{4,9}')   if len(items[0]) > 10:     _flag = False     print "姓名太长了!"   if not _rPhone.match(items[1]):     _flag = False     print "手机号码格式不正确"   if not _rQQ.match(items[2]):     _flag = False     print "QQ号码输入有误"   return _flag     def buildAddr(addr):   _addr={}   items=addr.split()   if len(items) < 3:     print "您输入的信息太少了"     return None   if not verifyInput(items):     return None    _addr['name']=items[0]   _addr['phone'] = items[1]   _addr['QQ'] = items[2]   return _addr  def addAddr(addr):   global _addrs_count,_addrs_dict   _addrs_count+=1   _addr=buildAddr(addr)   if not _addr:     return None   _addrs_dict[_addrs_count]=_addr  def init():   if not os.path.isfile(ADDRS_LIST):     return None    faddr=open(ADDRS_LIST,"r")   for line in faddr:      if len(line) == 0:       continue     addAddr(line)   faddr.close()   def save():   global _addrs_dict   faddr=open(ADDRS_LIST,"w+")   for addr in _addrs_dic<i style="color:transparent">本文来源gaodai$ma#com搞$代*码*网(</i>t.values():     faddr.write("{0}\t{1}\t{2}\n".format(addr['name'],addr['phone'],addr['QQ']))   faddr.flush()   faddr.close()   def doAll():   global _addrs_dict   if len(_addrs_dict) ")   debug("DEBUG:{0}".format(cond))   if len(cond) == 0:     return None   if cond.isdigit():     flag1=findById(int(cond,10))     flag2=findByPhone(cond)     flag3=findByQQ(cond)   else:     flag1=findByName(cond)      _flag = flag1 or flag2 or flag3    if not _flag:     print "没有查找到任何联系人!"  def doAdd():   line = raw_input("请依次输入联系人的姓名,手机号码,QQ号码>")   if len(line) == 0:     return None   addAddr(line)    def existsId(_id):   global _addrs_dict   return _addrs_dict.has_key(_id) #  if _id > _addrs_count or _id ")   if len(name) > 0:     _addr['name']=name    phone=raw_input("请输入新手机号码:>")   if len(phone) > 0:     _addr['phone']=phone    qq=raw_input("请输入新的QQ号码:>")   if len(qq) > 0 :     _addr['QQ']=qq    _addrs_dict[_id]=_addr   print "更新成功!"   print "联系人新的信息如下:"   printById(_id)  def findById(_id):   if existsId(_id):     printById(_id)     return True   else:     return False  def findByField(cond,field='name'):   global _addrs_dict   _flag = False   for key,addr in _addrs_dict.items():     if addr[field].find(cond) != -1:       printAddr(key,addr)       _flag=True   return _flag  def findByName(name):   return findByField(name,'name')  def findByPhone(phone):   return findByField(phone,'phone')  def findByQQ(qq):   return findByField(qq,'QQ')    def main():   init()   showMenu()   while(not QUIT_FLAG):     operation=raw_input("请在此处输入菜单命令>")     doSwitch(operation)   if __name__=='__main__':   main()   ## do something ##---------------------------------------------------- 

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Python 实现简单的电话本功能
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址