加入收藏 | 设为首页 | 会员中心 | 我要投稿 莱芜站长网 (https://www.0634zz.com/)- 云连接、建站、智能边缘云、设备管理、大数据!
当前位置: 首页 > 编程开发 > Python > 正文

Python 类实战

发布时间:2023-02-16 13:45:58 所属栏目:Python 来源:互联网
导读:还是以我们之前做过的,通讯录功能为例,这节课我们继续对通讯录功能使用类进行改造: 1. 通讯录功能简介 编写程序 addressBook.py 实现通讯录管理系统,通讯录包含若干联系人,每个联系人包括:姓名、地址、电话 3 项内容。程序提供 4 项基本功能: 增加联
  还是以我们之前做过的,通讯录功能为例,这节课我们继续对通讯录功能使用类进行改造:
 
  1. 通讯录功能简介
  编写程序 addressBook.py 实现通讯录管理系统,通讯录包含若干联系人,每个联系人包括:姓名、地址、电话 3 项内容。程序提供 4 项基本功能:
 
  增加联系人: 用户输入姓名、地址、电话等信息,将信息保存在一个列表中
 
  列出联系人: 打印输出所有联系人的信息
 
  查询联系人: 用户输入联系人姓名,打印输出该联系人的信息
 
  删除联系人: 用户输入联系人姓名,从通讯录中删除该联系人
 
  通过命令行界面实现以上功能,程序 addressBook.py 运行时首先打印一个菜单,如下所示:
 
  C:> python addressBook.py
  1. create person
  2. list all persons
  3. query person
  4. delete person
  5. quit
  Enter a number(1-5):
  总共有 5 个选项,用户输入对应的数字选择相应的功能,如下表所示:
 
  数字选项 功能描述
  1. create person 增加联系人
  2. list all persons 列出联系人
  3. query person 查询联系人
  4. delete person 删除联系人
  5. quit 退出通讯录程序
  2. 程序框架
  2.1 描述单个联系人的数据结构
  程序使用字典描述一个联系人,假设某个联系人的信息如下:
 
  姓名 地址 电话
  张三 南京 12306
  使用字典描述该联系人如下:
 
  >>> person = {'name': '张三', 'address': '南京', 'phone': '12306'}
  字典有三个键:name、address、phone
 
  对应的值分别为:张三、南京、12306
 
  2.2 描述所有联系人的数据结构
  程序将所有联系人信息存储在列表中,即通讯录是一个列表、列表的元素是字典。假设通讯录中有两个人,它们的信息如下所示:
 
  姓名 地址 电话
  张三 南京 12306
  李四 王五 10086
  本节使用面向对象的上设计方法实现通讯录,使用一个类 AddressBook 描述通讯录,类 AddressBook 的核心成员是一个列表,该列表保存了所有联系人, 代码如下:
 
  class AddressBook:def __init__(self):self.persons = []def addPerson(person):self.person.append(person)addressBook = AddressBook()zhangSan = {'name': '张三', 'address': '南京', 'phone': '12306'}liSi = {'name': '李四', 'address': '北京', 'phone': '10086'}addressBook.addPerson(zhangSan)addressBook.addPerson(lisi)
  在第 1 行,定义了类 AddressBook 描述通讯录
 
  在第 3 行,定义了成员变量 persons,它是一个列表,记录了所有的联系人
 
  在第 5 行,定义了成员方法 addPerson,它将单个联系人加入到联系人列表中
 
  在第 8 行,使用类 AdressBook 创建一个对象
 
  创建两个联系人
 
  在第 9 行,变量 zhangSan 的类型是一个字典,描述了张三的信息
 
  在第 10 行,变量 liSi 的类型是一个字典,描述了李四的信息
 
  将联系人添加到通讯录中
 
  在第 11 行,将联系人 zhangSan 添加到通讯录中
 
  在第 12 行,将联系人 liSi 添加到通讯录中
 
  2.3 类 AddressBook 的主要成员方法
  分析通讯录的功能需求,初步将程序划分为 4 个功能模块,如下表所示:
 
  功能模块 成员方法
  增加联系人 create_person
  列出联系人 list_person
  查询联系人 query_person
  删除联系人 delete_person
  使用 4 个成员方法实现相应的功能,这里先写出成员方法的定义,暂时忽略实现,代码如下:
 
  class AddressBook:def __init__(self):self.persons = []def create_person(self):passdef list_person(self):passdef query_person(self):passdef delete_person(self):pass
  2.4 主控模块
  本节完成程序的主功能模块 main,函数 main 的功能逻辑如下:
 
  获取用户输入的选择
 
  根据用户的选择执行对应的功能
 
  重复执行第 1 步的操作
 
  函数 main 的实现代码如下:
 
  def get_choice():passdef main():addressBook = AddressBook()while True:choice = get_choice()if choice == '1':addressBook.create_person()elif choice == '2':addressBook.list_person()elif choice == '3':addressBook.query_person()elif choice == '4':addressBook.delete_person()elif choice == '5':breakelse:print('Invalid choice') main()
  在第 1 行,定义了函数 get_choice,该函数打印功能菜单并读取用户的选择
 
  在第 4 行,定义了函数 main,该函数读取用户选择,并执行相应功能
 
  在第 5 行,使用类 AdressBook 创建一个对象 addressBook
 
  在第 6 行,创建一个 while 死循环
 
  在第 7 行,使用 get_choice() 函数获取用户输入的选择
 
  在第 9 行至第 20 行,根据 choice 执行对象 addressBook 相应的成员方法
 
  在第 18 行,如果 choice == ‘5’,则执行 break 退出程序
 
  2.5 获取用户输入
  编写函数 get_choice 获取用户的选择,代码如下:
 
  def get_choice():print('1. create person')print('2. list all persons')print('3. query person')print('4. delete person')print('5. quit')choice = input('Enter a number(1-5):')  return choice
  在第 2 行到第 6 行,打印功能菜单
 
  在第 7 行,使用 input() 函数获取用户输入的选择
 
  在第 8 行,返回用户的选择 choice
 
  3. 增加联系人
  本小节实现增加联系人的功能,如下所示:
 
      def create_person(self):name = input('name: ')address = input('address: ')phone = input('phone: ')person = {'name': name,  'address': address, 'phone': phone}self.persons.append(person)
  在第 1 行,定义函数 create_person,该函数实现增加联系人的功能
 
  在第 2 行,获取用户输入的 name
 
  在第 3 行,获取用户输入的 address
 
  在第 4 行,获取用户输入的 phone
 
  在第 5 行,根据用户输入的 name、address、phone 创建一个字典,用于描述该联系人
 
  在第 6 行,将联系人加入到 self.persons 中
 
  4. 列出联系人
  本小节实现列出所有联系人的功能,如下所示:
 
      def list_person(self):for person in self.persons:print('%s,%s,%s' % (person['name'], person['address'], person['phone']))
  在第 1 行,定义函数 list_person,实现列出所有联系人的功能
 
  在第 2 行,遍历列表 self.persons,循环变量 self.persons 是一个字典
 
  在第 3 行,打印变量 person 的内容
 
  对每个联系人打印输出一行,假设通讯录中已经存储了张三和李四两个联系人,输出如下:
 
  C:> python addressBook.py
  1. create person
  2. list all persons
  3. query person
  4. delete person
  5. quit
  Enter a number(1-5): 2
  张三,南京,12306
  李四,北京,10086
  在第 7 行,用户选择执行功能 2
 
  在第 8 行,打印联系人张三的信息
 
  在第 9 行,打印联系人李四的信息

(编辑:莱芜站长网)

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

    推荐文章
      热点阅读