<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        Python實現簡單的電話本功能

        來源:懂視網 責編:小采 時間:2020-11-27 14:34:43
        文檔

        Python實現簡單的電話本功能

        Python實現簡單的電話本功能:myPhoneBook2.py #!/usr/bin/python # -*- coding: utf-8 -*- import re class PhoneBook(object): '''這是一個電話簿腳本。 該腳本能夠實現 AddContact:添加聯系人信息 ShowContact:查找姓名顯示聯系人 SaveContacts:
        推薦度:
        導讀Python實現簡單的電話本功能:myPhoneBook2.py #!/usr/bin/python # -*- coding: utf-8 -*- import re class PhoneBook(object): '''這是一個電話簿腳本。 該腳本能夠實現 AddContact:添加聯系人信息 ShowContact:查找姓名顯示聯系人 SaveContacts:

        myPhoneBook2.py

        #!/usr/bin/python
        # -*- coding: utf-8 -*-
        import re
        class 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" 退出
        >>>''')
         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) <= len(number):
         del number[int(control)-1]
         self.contactsDict[name] = '/'.join(number)
         break
         else:
         print '***輸入有誤'
        
         def LoadContacts(self):
         '''
         try:
         PhoneBook = open('PhoneBook.txt', 'a+')
         contacts = PhoneBook.read()
         if contacts == '':
         print '***電話簿為空'
         else:
         ContactsList = contacts.split('
        ')
         for contact in ContactsList:
         if not contact == '':
         contact = contact.split(':')
         name = contact[0]
         number = contact[1]
         self.contactsDict[name] = number
         finally:
         PhoneBook.close()
         '''
         self.contactsDict = {line.split(':')[0]: line.split(':')[1] for line in open('PhoneBook.txt','a+').readlines()}
        
         def SaveContacts(self):
         try: 
         if self.contactsDict:
         PhoneBook = open('PhoneBook.txt', 'w')
         for name, number in self.contactsDict.items():
         line = name + ':' + number
         PhoneBook.write(line)
         PhoneBook.write('
        ')
         
         else:
         print '***沒有聯系人信息'
         
         finally:
         PhoneBook.close()
         
         
        if __name__ == '__main__':
         myPhoneBook = PhoneBook()
         myPhoneBook.LoadContacts()
         try:
         while True:
         raw_input('按回車鍵繼續')
         print '''
        --------------------------------
         輸入 a:添加聯系人
         輸入 s:顯示聯系人信息
         輸入 d:刪除聯系人
         輸入 q:退出
        --------------------------------'''
         control = raw_input('>>>')
         if control.lower() == 'a':
         myPhoneBook.AddContact()
         elif control.lower() == 's':
         name = raw_input('請輸入要查找的聯系人姓名
        >>>')
         myPhoneBook.ShowContact(name)
         elif control.lower() == 'd':
         name = raw_input('請輸入要刪除的聯系人姓名
        >>>')
         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_dict.values(): 
         faddr.write("{0}	{1}	{2}
        ".format(addr['name'],addr['phone'],addr['QQ'])) 
         faddr.flush() 
         faddr.close() 
         
         
        def doAll(): 
         global _addrs_dict 
         if len(_addrs_dict) < 1: 
         print "聯系人當中暫無記錄!" 
         return None 
         printHead() 
         for key,addr in _addrs_dict.items(): 
         printAddr(key,addr) 
         
        def doFind(): 
         _flag=False 
         flag1=flag2=flag3=False 
         cond=raw_input("請輸入查詢信息:>") 
         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 < 1: 
        # return False 
        # else: 
        # return True 
         
        def doRemove(): 
         FLAG = True 
         while FLAG: 
         key=raw_input("請輸入要刪除的聯系人的編號(取消請輸入#)") 
         if key == '#': 
         FLAG = False 
         continue 
         if not existsId(int(key,10)): 
         print "不存在您所輸入編號的聯系人。請確認" 
         continue 
         
         print "編號為 {0} 的聯系人信息如下:".format(key) 
         printById(int(key,10)) 
         yesOrNo=raw_input("您確定要刪除上述聯系人嗎?(y/n)") 
         if yesOrNo in "yY": 
         removeById(int(key,10)) 
         print "刪除成功!" 
         yesOrNo=raw_input("您還需要繼續刪除聯系人嗎?(y/n)") 
         if not yesOrNo in "yY": 
         FLAG = False 
         
         
         
        def doEdit(): 
         FLAG = True 
         while FLAG: 
         key=raw_input("請輸入要編輯的聯系人的編號(取消請輸入#)") 
         print "DEBUG:key:{0}".format(key) 
         if key == '#': 
         FLAG = False 
         continue 
         if not existsId(int(key,10)): 
         print "不存在您所輸入編號的聯系人。請確認" 
         continue 
         
         print "編號為 {0} 的聯系人信息如下:".format(key) 
         printById(int(key,10)) 
         updateById(int(key,10)) 
         FLAG = False 
         
         
        def doSave(): 
         save() 
         doQuit() 
         
        def doQuit(): 
         global QUIT_FLAG 
         QUIT_FLAG = True 
         print "正在退出……" 
        # exit(0) 
         
        def printHead(): 
         print "+-----+----------+---------------+---------------+" 
         print "|編號 | 姓名 | 手機號碼 | QQ號碼 |" 
         print "+-----+----------+---------------+---------------+" 
         
        def printAddr(key,addr): 
        # print "+-----+----------+---------------+---------------+" 
         print "|{0:^5}|{1:^10}|{2:^15}|{3:^15}|".format(key,addr['name'],addr['phone'],addr['QQ']) 
         print "+-----+----------+---------------+---------------+" 
         
         
         
        def printById(_id): 
         global _addrs_dict 
         printHead() 
         printAddr(_id,_addrs_dict[_id]) 
         
        def removeById(_id): 
         global _addrs_dict 
         _addrs_dict.pop(_id) 
         
        def updateById(_id): 
         global _addrs_dict 
         _addr= _addrs_dict.get(_id) 
         
         print "請輸入該聯系人的新信息,相應留空則保留原有信息" 
         name=raw_input("請輸入新姓名:>") 
         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 
        ##---------------------------------------------------- 
        

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Python實現簡單的電話本功能

        Python實現簡單的電話本功能:myPhoneBook2.py #!/usr/bin/python # -*- coding: utf-8 -*- import re class PhoneBook(object): '''這是一個電話簿腳本。 該腳本能夠實現 AddContact:添加聯系人信息 ShowContact:查找姓名顯示聯系人 SaveContacts:
        推薦度:
        標簽: 通訊錄 功能 實現
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 日本免费一二区在线电影| 国产桃色在线成免费视频| 国产亚洲日韩在线三区| 好吊色永久免费视频大全| 国产亚洲自拍一区| 亚洲第一视频在线观看免费| 亚洲色婷婷综合开心网| 国产特黄特色的大片观看免费视频| 国产亚洲av人片在线观看| 伊人免费在线观看高清版| 久久久久久亚洲精品| 国产92成人精品视频免费| 亚洲性色AV日韩在线观看| 免费v片在线观看品善网| 4hu四虎免费影院www| 久久亚洲精品中文字幕| 亚洲免费网站观看视频| 亚洲AV无码国产一区二区三区 | 亚洲性一级理论片在线观看| 青春禁区视频在线观看直播免费| 亚洲AV永久无码精品网站在线观看 | 亚洲AV一区二区三区四区| 亚洲综合色区在线观看| 免费观看久久精彩视频| 亚洲一区在线观看视频| 国产伦精品一区二区三区免费下载| 特a级免费高清黄色片 | 亚洲熟妇中文字幕五十中出| 日韩人妻无码精品久久免费一| 狠狠色香婷婷久久亚洲精品| 亚洲AV日韩精品一区二区三区| 中国黄色免费网站| 亚洲av无码一区二区三区天堂古代 | 3344永久在线观看视频免费首页| 精品国产日韩久久亚洲| 亚洲午夜福利在线观看| 毛片免费vip会员在线看| 中文在线观看国语高清免费| 久久狠狠爱亚洲综合影院| 亚洲国产成人精品91久久久 | 亚在线观看免费视频入口|