Python 实现简单的电话本功能
发布时间:2020-05-25 16:34:36 所属栏目:Python 来源:互联网
导读:Python 实现简单的电话本功能
|
下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。 脚本之家小编现在分享给大家,也给大家做个参考。 #!/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()
以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。 如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
