加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python 实现简单的电话本功能

发布时间:2020-12-17 17:28:43 所属栏目:Python 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 #!/usr/bin/python# -*- coding: utf-8 -*-import reclass PhoneBook(object): '''这是一个电话簿脚本。 该脚本能够实现 AddContact:添加联系人信息

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

#!/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" 退出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) <= 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('n')
                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('n')
            
            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('请输入要查找的联系人姓名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()
    
            
                
        
        

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读