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 info

    for i in info:
        if name == i['name']:
            print('该用户已经存在!')
            return

    info_dict = {}
    info_dict['name'] = name
    info_dict['age'] = age
    info_dict['mobile'] = mobile

    info.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)
            break
    else:
        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('请输入新的手机号:')
            break
    else:
        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']}")
            break
    else:
        print('该学员不存在')

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

# 显示所有学员信息
def print_all():
    """ 显示所有学员信息 """
    global info

    for 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

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

整体代码:



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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

drool 7 multiThread 测试

基本信息 通过option ,使用如下代码进行设置 //线程数量10MaxThreadsOption optionMaxThreadsOption.get(10);kieBaseConf.setOption(option);kieBaseConf.setOption(MultithreadEvaluationOption.YES);并发是以CompositeDefaultAgenda/Rule为颗粒度来的&#xff0…

国企央企降薪20%,年终奖也没了。

* 你好,我是前端队长,在职场,玩副业,文末有福利! 精彩回顾:京东内部员工,爆料工资与公积金收入! 最近,很多国企央企也开始降薪了,有的甚至降幅达到 21%&#…

针对操作系统漏洞的反馈方法

一、针对操作系统漏洞的反馈方法 漏洞扫描指基于漏洞数据库,通过扫描等手段对指定的远程或者本地计算机系统的安全脆弱性进行检测,发现可利用漏洞的一种安全检测(渗透攻击)行为。在进行漏洞扫描后,需先确定哪些是业务…

2023年亚太杯数学建模C题新能源汽车成品文章(思路模型代码成品)

一、翻译 新能源汽车是指采用先进的技术原理、新技术和新结构,以非常规车用燃料(非常规车用燃料是指汽油和柴油以外的燃料(非常规车用燃料是指汽油和柴油以外的燃料),并集成了汽车动力控制和驱动等先进技术的汽车。新能源汽车包括…

博物馆线上导览系统的设计与实现-计算机毕业设计源码64574

摘 要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信息存…

网络运维与网络安全 学习笔记2023.11.25

网络运维与网络安全 学习笔记 第二十六天 今日目标 ACL原理与类型、基本ACL配置、高级ACL配置 高级ACL之ICMP、高级ACL之telnet ACL原理与类型 项目背景 为了企业的业务安全,要求不同部门对服务器有不同的权限 PC1不能访问Server PC2允许访问Server 允许其他所…

Portraiture全新4.1.2版本升级更新

关于PS修图插件,相信大家都有安装过使用过,而且还不止安装了一款,比如最为经典的DR5.0人像精修插件,Retouch4me11合1插件,Portraiture磨皮插件,这些都是人像精修插件中的领跑者。其中 Portraiture 刚刚升级…

HDMI接口信号流向及原理图分析

1、HDMI的来源及发展 如今显示器上最常用的接口无非HDMI(High Definition Multimedia Interface)与DP(DisplayPort)两种,VGA与DVI已经很少使用,原因在于VGA传输的是模拟信号,在发送端需要将数字…

【UGUI】实现跑酷游戏分数血量显示在UI中

//1.实现让玩家的金币分数显示在UI文本中 2.让血量和滑动条关联起来 这一节课主要学会获取组件并改变属性,举一反三! using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using TMPro;//1.实现让玩…

JMeter 设置请求头信息的详细步骤

在使用 JMeter 的过程中,我们会遇到需要设置请求头信息的场景。比如: POST 传过去的 Body 数据是 json 格式的。需要填添加头信息:Content-Type:application/json。 在 header 中用 token 来传用户的认证信息。 下面,…

NX二次开发UF_CURVE_ask_offset_direction_2 函数介绍

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_ask_offset_direction_2 Defined in: uf_curve.h int UF_CURVE_ask_offset_direction_2(UF_STRING_p_t input_curves, double offset_direction_vector [ 3 ] , double dra…

[pyqt5]pyqt5设置窗口背景图片后上面所有图片都会变成和背景图片一样

pyqt5的控件所有都是集成widget,窗体设置背景图片后控件背景也会跟着改变,此时有2个办法。第一个办法显然我们可以换成其他方式设置窗口背景图片,而不是使用styleSheet样式表,网上有很多其他方法。还有个办法就是仍然用styleSheet…

岂曰无衣 汉家衣裳再现锦绣美景

——福州第五届1122汉服节出行盛大开幕11月25日下午,闽江之心海丝广场,一场盛大的汉服文化节——福州第五届1122汉服节出行活动在这里隆重开幕。这个被誉为“穿在身上的历史”的传统文化,在这片古老而神秘的土地上焕发出新的生机与活力。据了…

【Ambari】HDP单机自动化安装(基础环境和MySQL脚本一键安装)

🦄 个人主页——🎐开着拖拉机回家_Linux,大数据运维-CSDN博客 🎐✨🍁 🪁🍁🪁🍁🪁🍁🪁🍁 🪁🍁🪁&am…

C# WPF上位机开发(掌握一点c#基础)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 wpf虽然比较简单,但是最好还是要有一点c#的基础比较好。本身wpf有点类似于web开发,前端和html差不多,后端则和j…

基于springboot实现医院信管系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现医院信管系统演示 摘要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生&#x…

盘点43个Android项目源码安卓爱好者不容错过

盘点43个Android项目源码安卓爱好者不容错过 学习知识费力气,收集整理更不易。 知识付费甚欢喜,为咱码农谋福利。 链接:https://pan.baidu.com/s/1yHmkUeX4vxVag9Yr0yeQRg?pwd8888 提取码:8888 项目名称 Android NDK直播项…

pygame加载图像,并让小球做平抛运动

文章目录 load转换和存储自由落体 在游戏设计中,图像显示是必不可少的功能,pygame中的image模块便用于加载图像。 load 通过load函数,可以加载多种图像格式,如下表所示 旧版本bmp, gpeg, png, pcx, tiff, xpmc, lbm(以及pbm, p…

matlab 计算点云的最值

目录 一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理 matlab有自带的函数可以直接获取点云的最值,具体实现看代码即可。 二、代码实现 clc; clear; close all…

论文阅读——DDeP(cvpr2023)

分割标签耗时且贵,所以常常使用预训练提高分割模型标签有效性,反正就是,需要一个预训练分割模型。典型的分割模型encoder部分通过分类任务预训练,decoder部分参数随机初始化。作者认为这个方法次优,尤其标签比较少的情…