美文网首页
用python编写一个地址簿

用python编写一个地址簿

作者: 鱼多多同学 | 来源:发表于2019-04-13 18:11 被阅读0次

今天在网上复习了一下python,用的是《简明Python教程》(第四版)。这是一本很好的入门级Python教材,简明扼要,查阅方便。

教材最后的作业是用python编写一个地址簿,可以实现联系人添加、打印、查阅、修改等功能,还要能把整个地址簿保存到文件、从文件读取。

这个作业基本上用到了本书中涉及的所有要点,包括面向对象编程、列表、文件IO等。

以下是我的作业,完成时间大约1小时。

```python

import pickle as p

class Contact:

    # 这是一个联系人类,包含姓名、电话、地址三个属性

    def __init__(self, name, phone, addr = ""):

        self.name = name

        self.phone = phone

        self.addr = addr

    def print(self):

        # 打印联系人

        print("Name: %s    Phone: %s    Addr: %s" % (self.name, self.phone, self.addr))

class Abook:

    # 这是一个地址簿类

    def __init__(self, filename = "C:/Users/yutuo/Documents/Python Scripts/address_book/address_book.data"):

        try:

            # 首先尝试从指定文件中读取地址簿

            f = open(filename, 'rb')

        except FileNotFoundError:

            # 如果找不到文件,则创建空的联系人列表

            self.clist = []

            return

        try:

            self.clist = p.load(f)

        except EOFError:

            # 如果文件为空,则创建空的联系人列表

            self.clist = []   

        finally:

            # 关闭文件

            f.close()

    def addContact(self, name, phone, addr = ""):

        for c in self.clist:

            # 首先查找,联系人是否已经存在

            if c.name == name:

                print("%s already exists." % name)

                return

        # 创建新的联系人实例

        newContact = Contact(name, phone, addr)

        # 将新的练习人添加到联系人列表

        self.clist.append(newContact)

    def countContact(self):

        # 打印总的联系人数

        print("I have %d contacts." % len(self.clist))

    def printContact(self, name):

        # 打印指定联系人

        for c in self.clist:

            if c.name == name:

                c.print()

                return

        print("No contact named %s found." % name)

    def printAll(self):

        # 打印所有联系人

        if len(self.clist) == 0:

            print("Zero contact.")

            return

        for c in self.clist:

            c.print()

    def editContact(self, name, phone, addr = ""):

        # 修改指定联系人信息

        for c in self.clist:

            if c.name == name:

                c.phone = phone

                c.addr = addr

                print("Contact information changed.")

                c.print()

                return           

        print("No contact named %s found." % name)

    def delContact(self, name):

        # 删除指定联系人

        for c in self.clist:

            if c.name == name:

                self.clist.remove(c)

                print("%s removed." % name)

                return

        print("No contact named %s found." % name)

    def closeBook(self, filename = "C:/Users/yutuo/Documents/Python Scripts/address_book/address_book.data"):

        # 将地址簿保存到文件,并关闭

        f = open(filename, 'wb')

        p.dump(self.clist, f)

        print("Address book closed. Saved at %s" % filename)

        f.close()

```

相关文章

  • 用python编写一个地址簿

    今天在网上复习了一下python,用的是《简明Python教程》(第四版)。这是一本很好的入门级Python教材,...

  • PEP 8-Python编码规范整理

    我是用Python的IDE:pycharm来编写Python代码的,用IDE编写代码有一个好处就是语法高亮,智能提...

  • 每周一个 Python 模块 | os.path

    专栏地址:每周一个 Python 模块 本文基于 Python3 编写测试。 os.path 模块是跨平台的,即使...

  • Python网络爬虫(由简入深)

    本文章包含内容 一、Python必备基础认识二、Python编写的初步尝试(用Sublime Text编写)三、网...

  • Python以太坊和比特币生成vanity地址

    今天,我们将编写一个非常简单的python脚本来生成虚荣地址,这些地址是以某个短语或字母序列开头的加密货币地址。该...

  • 话题-命运

    司命掌管凡人运簿,编写凡人人生,神仙运簿掌握在何人手中? 神仙下凡历劫,运簿编写,有何讲究? 东华帝君与夜华同样下...

  • 2018-11-23

    今天看了用Python编写英语词典

  • Python

    用Python编写程序制作英语学习词典

  • 远程地址簿

    最近因为在重构一个新的系列话机,了解到了更多sip话机的底层功能,想着说记录一下,也算是一种复习。 远程地址簿对应...

  • 红色地址簿

    深夜的泪 从右眶滑向左眶 不停歇地 流淌在脸颊,枕巾上 我想,遇见你 是我最大的“幸运” 我永远都牵挂着你 此生唯...

网友评论

      本文标题:用python编写一个地址簿

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