【Python】用Python实现最基本的电话本

作者: IT派森 | 来源:发表于2019-08-10 22:33 被阅读8次

    <用Python实现最基本的电话本>

    用Python实现最基本的电话本代码片段

    1. [文件] myPhoneBook2.py ~ 6KB
    
    #!/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 '***姓名不能为空'
    Python资源分享qun 784758214 ,内有安装包,PDF,学习视频,这里是Python学习者的聚集地,零基础,进阶,都欢迎             
            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()
     
     Python资源分享qun 784758214 ,内有安装包,PDF,学习视频,这里是Python学习者的聚集地,零基础,进阶,都欢迎
    if __name__ == '__ma
    1c42
    in__':
        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()
    Python资源分享qun 784758214 ,内有安装包,PDF,学习视频,这里是Python学习者的聚集地,零基础,进阶,都欢迎
    

    相关文章

      网友评论

        本文标题:【Python】用Python实现最基本的电话本

        本文链接:https://www.haomeiwen.com/subject/ueeaqctx.html