当前位置:首页 > 编程技术 > 正文内容

Python 编程小案例

yc8881年前 (2023-02-25)编程技术606

Python 编程小案例

本小节实现一个通讯录管理程序,通过这个案例来融会贯通之前所学习的知识,该程序使用到如下知识点:

  • 条件选择

  • 循环

  • 列表

  • 字典

  • 键盘输入

  • 屏幕输出

编写程序 addr-manage.py 实现通讯录管理系统,通讯录包含若干联系人,每个联系人包括:姓名、地址、电话 3 项内容。程序提供 4 项基本功能:

  • 增加联系人: 用户输入姓名、地址、电话等信息,将信息保存在一个列表中

  • 列出联系人: 打印输出所有联系人的信息

  • 查询联系人: 用户输入联系人姓名,打印输出该联系人的信息

  • 删除联系人: 用户输入联系人姓名,从通讯录中删除该联系人

通过命令行界面实现以上功能,程序 addr-manage.py 运行时首先打印一个菜单,如下所示:

C:\> python addr-manage.py1. create person2. list all persons3. query person4. delete person5. quit
Enter a number(1-5):

总共有 5 个选项,用户输入对应的数字选择相应的功能,如下表所示:

数字选项功能描述
1. create person增加联系人
2. list all persons列出联系人
3. query person查询联系人
4. delete person删除联系人
5. quit退出通讯录程序

1. 程序框架

1.1 数据结构

程序使用字典描述一个联系人,假设某个联系人的信息如下:

姓名地址电话
张三南京12306

使用字典描述该联系人如下:

>>> person = {'name': '张三', 'address': '南京', 'phone': '12306'}
  • 字典有三个键:name、address、phone

  • 对应的值分别为:张三、南京、12306

程序将所有联系人信息存储在列表中,即通讯录是一个列表、列表的元素是字典。假设通讯录中有两个人,它们的信息如下所示:

姓名地址电话
张三南京12306
李四王五10086

使用列表描述通讯录如下:

>>> zhangSan = {'name': '张三', 'address': '南京', 'phone': '12306'}>>> liSi = {'name': '李四', 'address': '北京', 'phone': '10086'}>>> persons = [zhangSan, liSi]
  • 在第 1 行,变量 zhangSan 的类型是一个字典,描述了张三的信息

  • 在第 2 行,变量 liSi 的类型是一个字典,描述了李四的信息

  • 在第 3 行,persons 是一个列表,存储了 zhangSan 和 liSi 两个联系人

上面的代码为了易于理解,使用了 3 行代码描述了通讯录。也可以使用 1 行代码描述该通讯录,代码如下:

>>> persons = [{'name': '张三', 'address': '南京', 'phone': '12306'}, {'name': '李四', 'address': '北京', 'phone': '10086'}]

1.2 程序框架

程序框架由两个主要部分:

  • 使用全局变量 persons 保存所有联系人的信息

  • 使用循环处理程序逻辑

    • 首先打印功能菜单

    • 然后获取用户输入的选择

    • 根据用户的选择执行对应的功能

  • 首先打印功能菜单

  • 然后获取用户输入的选择

  • 根据用户的选择执行对应的功能

persons = []while True:
    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):')   

    if choice == '1':        pass
    elif choice == '2':        pass
    elif choice == '3':        pass
    elif choice == '4':        pass
    elif choice == '5':        pass
    else:
        print('Invalid choice')
  • 在第 1 行,创建一个空列表 persons,persons 记录所有联系人的信息

  • 在第 3 行,创建一个 while 死循环

  • 在第 3 行至第 8 行,打印通讯录功能菜单

  • 在第 9 行,使用 input() 函数获取用户输入的选择

  • 在第 11 行至第 22 行,根据 choice 选择执行相应的功能

  • 在第 12 行、第 14 行、第 16 行、第 18 行、第 20 行,在相应的功能实现处使用 pass 表示空操作,在下面的小节中将逐步填充

2. 增加联系人

本小节实现增加联系人的功能,如下所示:

if choice == '1':
    name = input('name: ')
    address = input('address: ')
    phone = input('phone: ')
    person = {'name': name,  'address': address, 'phone': phone}
    persons.append(person)
  • 在第 1 行,如果 choice == ‘1’,则执行增加联系人的功能

  • 在第 2 行,获取用户输入的 name

  • 在第 3 行,获取用户输入的 address

  • 在第 4 行,获取用户输入的 phone

  • 在第 5 行,根据用户输入的 name、address、phone 创建一个字典,用于描述该联系人

  • 在第 6 行,将联系人加入到 persons 中

3. 列出联系人

本小节实现列出所有联系人的功能,如下所示:

elif choice == '2':   for person in persons:       print('%s,%s,%s' % (person['name'], person['address'], person['phone']))
  • 在第 1 行,如果 choice == ‘2’,则执行列出所有联系人的功能

  • 在第 2 行,遍历列表 persons,循环变量 person 是一个字典

  • 在第 3 行,打印变量 person 的内容

对每个联系人打印输出一行,假设通讯录中已经存储了张三和李四两个联系人,输出如下:

C:\> python addr-manage.py1. create person2. list all persons3. query person4. delete person5. quitEnter a number(1-5): 2张三,南京,12306李四,北京,10086
  • 在第 7 行,用户选择执行功能 2

  • 在第 8 行,打印联系人张三的信息

  • 在第 9 行,打印联系人李四的信息

  1. 查询联系人

本小节实现查询联系人的功能,如下所示:

elif choice == '3':
    name = input('name: ')    for person in persons:        if person['name'] == name:            print('%s,%s,%s' % (person['name'], person['address'], person['phone']))
  • 在第 1 行,如果 choice == ‘3’,则执行查询联系人的功能

  • 在第 2 行,获取用户输入的 name

  • 在第 3 行,遍历列表 persons,循环变量 person 是一个字典

  • 在第 4 行,如果用户输入的 name 和循环访问 person 的 name 相同,则表示找到指定的 person

  • 在第 5 行,打印变量 person 的内容

4. 删除联系人

本小节实现删除联系人的功能,如下所示:

elif choice == '4':
    name = input('name: ')    for person in persons:        if person['name'] == name:
            persons.remove(person)            break
  • 在第 1 行,如果 choice == ‘4’,则执行删除联系人的功能

  • 在第 2 行,获取用户输入的 name

  • 在第 3 行,遍历列表 persons,循环变量 person 是一个字典

  • 在第 4 行,如果用户输入的 name 和循环访问 person 的 name 相同,则表示找到指定的 person

  • 在第 5 行,使用方法 persons.remove(person), 从 persons 中删除元素 person

  • 在第 6 行,退出 for 循环

5. 退出程序

本小节实现退出程序的功能,如下所示:

 elif choice == '5':     break
  • 在第 1 行,如果 choice == ‘5’,则执行退出程序的功能

  • 在第 2 行,执行 break 语句退出程序的主循环

6. 完整的程序

persons = []while True:    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):')   

    if choice == '1':
        name = input('name: ')
        address = input('address: ')
        phone = input('phone: ')
        person = {'name': name,  'address': address, 'phone': phone}
        persons.append(person)
    elif choice == '2':        for person in persons:            print('%s,%s,%s' % (person['name'], person['address'], person['phone']))
    elif choice == '3':
        name = input('name: ')        for person in persons:            if person['name'] == name:                print('%s,%s,%s' % (person['name'], person['address'], person['phone']))
    elif choice == '4':
        name = input('name: ')        for person in persons:            if person['name'] == name:
                persons.remove(person)                break
    elif choice == '5':        break
    else:        print('Invalid choice')


本站发布的内容若侵犯到您的权益,请邮件联系站长删除,我们将及时处理!


从您进入本站开始,已表示您已同意接受本站【免责声明】中的一切条款!


本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行研究。


本站资源仅供学习和交流使用,版权归原作者所有,请勿商业运营、违法使用和传播!请在下载后24小时之内自觉删除。


若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,使用者自行承担,概与本站无关。


本文链接:https://www.10zhan.com/biancheng/10605.html

标签: Python
分享给朋友:

“Python 编程小案例” 的相关文章

【说站】laravel实现自定义404页面并给页面传值

【说站】laravel实现自定义404页面并给页面传值

以 laravel5.8 为例,虽然有自带的404页面,但太简单,我们更希望能自定义404页面,将用户留在站点。实现的方式很简单,将自定义的视图文件命名为 404.blade.php,并放到 reso...

【说站】用一句话就可以去除宝塔面板操作上的二次验证

【说站】用一句话就可以去除宝塔面板操作上的二次验证

用过宝塔的朋友应该都会发现,现在宝塔面板有些鸡肋的功能,删除文件、删除数据库、删除站点等操作都需要做计算题!不仅加了几秒的延时等待,还无法跳过!这时候就会有朋友在想,如何去除宝塔面板的二次验证,此篇文...

【说站】利用Webhook实现Java项目自动化部署

【说站】利用Webhook实现Java项目自动化部署

用webhook就能实现Java项目自动部署,其实原理很简单。费话不多说,直接往下看教程。1. 创建gitee仓库并初始化2. 在linux安装git3. 在宝塔的软件的商店里下载Webhook4....

【说站】电脑安装MySQL时出现starting the server失败原因及解决方案

【说站】电脑安装MySQL时出现starting the server失败原因及解决方案

今天在安装MySQL时出现starting the server失败,经过查询分析得出以下结论,记录一下操作步骤。原因分析:如果电脑是第一次安装MySQL,一般不会出现这样的报错。如下图所示。star...

【说站】vagrant实现linux虚拟机的安装并配置网络

【说站】vagrant实现linux虚拟机的安装并配置网络

一、VirtualBox的下载和安装1、下载VirtualBox官网下载:https://www.virtualbox.org/wiki/Downloads我的电脑是Windows的,所以下载Wind...

【说站】C#在PDF中添加墨迹注释Ink Annotation的步骤详解

【说站】C#在PDF中添加墨迹注释Ink Annotation的步骤详解

PDF中的墨迹注释(Ink Annotation),表现为徒手涂鸦式的形状;该类型的注释,可任意指定形状顶点的位置及个数,通过指定的顶点,程序将连接各点绘制成平滑的曲线。下面,通过C#程序代码介绍如何...