Python---练习:使用Python函数编写通讯录系统

预览通讯录系统最终效果

首先,进行需求分析,整个系统功能,分为6个板块,功能如下:

① 添加学员信息

② 删除学员信息

③ 修改学员信息

④ 查询学员信息

⑤ 遍历所有学员信息

⑥ 退出系统

系统共6个功能,用户根据自己需求选取

其次,根据每个部分功能,进行一步步实现。

① 显示功能界面------让用户知道这个是干嘛用的。

② 用户输入功能序号-----1  2   3   4  5  6 

③ 根据用户输入的功能序号,执行不同的功能(函数)----也就是增删改查。

☆ 定义函数------涉及各个不同功能的定义,内部功能怎么实现。

☆ 调用函数------涉及各个不同功能的调用,内部功能是否实现

注意:

模块化的编程思想是最早期的编程思想,强调把一个系统分解为若干个功能每个功能就是一个模块(函数)。当所有功能开发完毕后,则系统就完成了。

开始写代码:

① 显示功能界面-----print输入显示的内容。

② 提示用户输入要操作的功能编号--------input让用户输入编号。

③ 根据用户输入的序号执行相关功能 --------- if...elif...else

④ 如何让程序一直执行下去,而不是选择某个功能后,程序就退出了 -------while True

⑤ 根据用户输入的序号,完成系统中的每一个功能

所有功能都有使用前提:必须共享一套数据 -------info = [{}, {}, {}]

☆ 学员信息添加功能--------(add_student())


显示功能界面

先 定义函数`print_info`负责显示系统功能。

相关链接Python---函数的作用,定义,使用步骤(调用步骤)-CSDN博客

def print_info():print('-' * 20)print('欢迎登录学员管理系统')print('1: 添加学员信息')print('2: 删除学员信息')print('3: 修改学员信息')print('4: 查询学员信息')print('5: 遍历输出所有学员信息')print('6: 退出系统')print('-' * 20)print_info()

写完先打印看看效果

继续

用户输入序号,选择功能---------使用input获取用户输入序号---要加int变整型:

相关链接Python数据类型转换-CSDN博客

Python中的标准输入-----input()-CSDN博客

user_num = int(input('请选择您需要的功能序号:'))

根据用户选择,执行不同的功能----------使用if判断用户要实现的功能

相关链接 Python---if选择判断结构、嵌套结构(if elif else)_python多重if嵌套-CSDN博客

if user_num == 1:print('添加学员信息')
elif user_num == 2:print('删除学员信息')
elif user_num == 3:print('修改学员信息')
elif user_num == 4:print('查询学员信息')
elif user_num == 5:print('查询学员信息')
elif user_num == 6:print('退出系统')
else:print('信息输入错误')

循环输出功能菜单,直至用户手工退出

① 用户选择系统功能的代码需要循环使用,直到用户主动退出系统。

② 如果用户输入1-6以外的数字,需要提示用户。

相关链接Python---死循环概念---while True-CSDN博客

Python---if选择判断结构、嵌套结构(if elif else)_python多重if嵌套-CSDN博客


while True:print_info()user_num = int(input('请输入您要执行的功能序号:'))if user_num == 1:print('添加学员信息')elif user_num == 2:print('删除学员信息')elif user_num == 3:print('修改学员信息')elif user_num == 4:print('查询学员信息')elif user_num == 5:print('查询学员信息')elif user_num == 6:print('退出系统')else:print('信息输入错误')

☆ 定义全局列表,保存学员信息

所有功能函数都是操作学员信息,所有存储所有学员信息应该是一个全局变量,数据类型为列表。

相关链接    Python--列表及其应用场景---增、删、改、查。-CSDN博客

info = []

后续列表结构如下:

info = [{'name':'Tom', 'age':18, 'mobile':'13578664321'}, {'name':'Mary', 'age':18, 'mobile':'19920187732'}, {'name':'Jennifier', 'age':18, 'mobile':'18862357791'}]

添加学员信息代码实现

需求分析: 接收用户输入学员信息,并保存 判断是否添加学员信息 如果学员姓名已经存在,则报错提示 如果学员姓名不存在,则准备空字典,将用户输入的数据追加到字典 将用户字典数据追加到全局学员信息列表,最后,if条件成立的位置调用该函数

相关链接Python---函数的作用,定义,使用步骤(调用步骤)-CSDN博客

Python中的标准输入-----input()-CSDN博客

Python---global关键字---设置全局变量-CSDN博客

Python-----for循环基本语法及其应用---对序列进行遍历循环--内部会自动更新计数器(类似while循环里面的 i += 1)-CSDN博客

Python--列表及其应用场景---增、删、改、查。-CSDN博客

Python---字典的增、删、改、查操作-CSDN博客

add_info函数代码实现

def add_info():""" 添加学员信息 """name = input('请输入学员姓名:')age = input('请输入学员年龄:')mobile = input('请输入学员电话:')global infofor i in info:if name == i['name']:print('该用户已经存在!')returninfo_dict = {}info_dict['name'] = nameinfo_dict['age'] = ageinfo_dict['mobile'] = mobileinfo.append(info_dict)print(info)

删除学员信息代码实现

需求分析按用户输入的学员姓名进行删除
用户输入目标学员姓名
检查这个学员是否存在
如果存在,则列表删除这个数据
如果不存在,则提示“该用户不存在”
对应的if条件成立的位置调用该函数

python---for循环结构中的else结构(是同级关系)-CSDN博客相关链接   python---for循环结构中的else结构(是同级关系)-CSDN博客

Python--列表及其应用场景---增、删、改、查。-CSDN博客

del_info函数代码实现

# 删除学员
def del_info():"""删除学员"""# 1. 用户输入要删除的学员的姓名del_name = input('请输入要删除的学员的姓名:')global info# 2. 判断学员是否存在:如果输入的姓名存在则删除,否则报错提示for i in info:if del_name == i['name']:info.remove(i)breakelse:print('该学员不存在')print(info)

修改学员信息代码实现

需求分析
用户输入目标学员姓名
检查这个学员是否存在  
如果存在,则修改这位学员的信息,例如手机号
如果不存在,则报错
对应的if条件成立的位置调用该函数

Python--列表及其应用场景---增、删、改、查。-CSDN博客相关链接  Python--列表及其应用场景---增、删、改、查。-CSDN博客

python---for循环结构中的else结构(是同级关系)-CSDN博客

modify_info函数代码实现

# 修改函数
def modify_info():"""修改函数"""# 1. 用户输入要修改的学员的姓名modify_name = input('请输入要修改的学员的姓名:')global info# 2. 判断学员是否存在:如果输入的姓名存在则修改手机号,否则报错提示for i in info:if modify_name == i['name']:i['mobile'] = input('请输入新的手机号:')breakelse:print('该学员不存在')print(info)

查询学员信息代码实现

需求分析
用户输入目标学员姓名
检查学员是否存在
如果存在,则显示这个学员的信息
如果不存在,则报错提示
对应的if条件成立的位置调用该函数

相关链接  python---for循环结构中的else结构(是同级关系)-CSDN博客

Python---global关键字---设置全局变量-CSDN博客

search_info函数代码实现

# 查询学员
def search_info():"""查询学员"""# 1. 输入要查找的学员姓名:search_name = input('请输入要查找的学员姓名:')global info# 2. 判断学员是否存在:如果输入的姓名存在则显示这位学员信息,否则报错提示for i in info:if search_name == i['name']:print('查找到的学员信息如下:----------')print(f"该学员的学号是{i['id']}, 姓名是{i['name']}, 手机号是{i['mobile']}")breakelse:print('该学员不存在')

打印所有学员信息(print_all()函数代码实现)

# 显示所有学员信息
def print_all():""" 显示所有学员信息 """global infofor i in info:print(f"姓名:{i['name']},年龄:{i['age']},电话:{i['mobile']}")

退出学员管理系统

相关链接 

Python--循环中的两大关键词 break 与 continue-CSDN博客

Python----break关键字对while...else结构的影响-CSDN博客

Python---break关键字对for...else结构的影响-CSDN博客

elif user_num == 6:flag = input('确认退出么? 确认请输入【yes】:')if flag == 'yes':break

所有都按照功能分为一个个不同板块,在每个版块内,结合以往掌握知识点,一步步写出来即可。

整体代码:



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/221452.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

geemap学习笔记014:加载本地的tif文件

前言 Colab中似乎没法直接加载云盘中的数据,但是可以先上传到GEE中的assets中,再加载本地的数据。下面是以这个数据为例进行展示。 1 上传数据 首先将本地的tif数据上传到Asset中,得到独一的Image ID。 2 加载数据 使用ee.Image加载数据 …

STM32-SPI3控制MCP3201、MCP3202(Sigma-Delta-ADC芯片)

STM32-SPI3控制MCP3201、MCP3202(Sigma-Delta-ADC芯片) 原理图手册说明功能方框图引脚功能数字输出编码与实值的转换分辨率设置与LSB最小和最大输出代码(注) 正负符号寄存器位MSB数字输出编码数据转换的LSB值 将设备输出编码转换为…

skywalking 简单操作文档

1.1. 基础概念 1.1.1. 概述 SkyWalking是 apache基金会下面的一个开源 APM项目,为微服务架构和云原生架构系统设计。它通过探针自动收集所需的指标,并进行分布式追踪。通过这些调用链路以及指标,Skywalking APM会感知应用间关系和服务间关系…

项目实战——苍穹外卖(DAY10)

如果之前有改过端口号造成WebSocket无法连接的,可以看本篇文章“来单提醒”前的内容进行解决。 课程内容 Spring Task 订单状态定时处理 WebSocket 来单提醒 客户催单 功能实现:订单状态定时处理、来单提醒和客户催单 订单状态定时处理&#xff1a…

嵌入式八股 | 笔试面试 | 校招秋招 | 题目精选

嵌入式八股精华版1.0所有216道题目如下: 欢迎关注微信公众号【赛博二哈】并加入嵌入式求职交流群。提供简历模板、学习路线、岗位整理等 欢迎加入知识星球【嵌入式求职星球】获取完整嵌入式八股。 提供简历修改、项目推荐、求职规划答疑。另有各城市、公…

常见树种(贵州省):020女贞、异叶梁王茶、掌叶梁王茶、鹅掌柴、楤木、柞木、华重阳木、马蹄荷、山桐子、刺楸

摘要:本专栏树种介绍图片来源于PPBC中国植物图像库(下附网址),本文整理仅做交流学习使用,同时便于查找,如有侵权请联系删除。 图片网址:PPBC中国植物图像库——最大的植物分类图片库 一、女贞 …

答题活动小程序竞品分析

答题小程序竞品分析 答题活动小程序竞品分析 知识竞赛小程序竞品分析 ~ 从2020年开始,机缘巧合,我开始涉及答题小程序的开发,从最初的刷题场景到答题活动场景,已经走过了三个年头,这期间我开发的答题小程序产品也逐…

AI智能人机对话小程序系统源码 附带完整的搭建教程

移动互联网的普及和快速发展,小程序已经成为了一种非常流行的应用形态。小程序具有即用即走、轻量级的特点,非常适合用于提供各种便捷服务。下面罗峰来给大家分享一款AI智能人机对话小程序系统源码,带有完整的搭建教程。 以下是部分代码示例…

STM32 默认时钟更改 +debug调试

STM32时钟 文章目录 STM32时钟前言一、修改系统时钟二、DEBUG 前言 为什么我们要改STM32的时钟呢,打个比方在做SPI驱动的时候,需要16M的时钟,但是stm32默认是72的分频分不出来,这个时候我们就要改系统时钟了,那么怎么…

vue3使用TinyMCE富文本

TinyMCE 介绍 TinyMCE 是一个功能强大的富文本编辑器,它允许您在网页应用程序中创建和编辑具有丰富格式的内容。官网 github项目地址 文档地址 下载tinymce文件 从网页下载最新版zip,也可以打开下面链接下载。 打开网页 tinymce.zip zh-Hans 将下载…

Java游戏制作——王者荣耀

一.准备工作 首先创建一个新的Java项目命名为“王者荣耀”,并在src下创建两个包分别命名为“com.sxt"、”com.stx.beast",在相应的包中创建所需的类。 创建一个名为“img”的文件夹来储存所需的图片素材。 二.代码呈现 package com.sxt;import javax.sw…

BetaFlight模块设计之三十六:SoftSerial

BetaFlight模块设计之三十六:SoftSerial 1. 源由2. API接口2.1 openSoftSerial2.2 onSerialRxPinChange2.3 onSerialTimerOverflow2.4 processTxState2.5 processRxState 3. 辅助函数3.1 applyChangedBits3.2 extractAndStoreRxByte3.3 prepareForNextRxByte 4. 总结…