当前位置: 首页 > article >正文

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变整型,否则输出的是字符串,下面的if 判断无法进行

相关链接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('信息输入错误')

  因为用户可能一直操作,不确定什么时候会结束,

所以: 要一直   循环输出功能菜单直至   用户手工(也就是用户输入序号6 退出系统) ,才会 退出

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

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

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

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


#  要一直   循环输出功能菜单---用while True  死循环
while True:
    print_info()   # 调用的,和下面用户自己输入的,因为都是一直调用,输入,所以都在死循环内
    # 上面调用的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函数代码实现----   add   英 /æd/  v. 添加 


def add_info():
    """ 添加学员信息 """
    name = input('请输入学员姓名:')
    age = input('请输入学员年龄:')
    mobile = input('请输入学员电话:')

    global info   #  设置全局变量,让之后的每个函数,都用到这一个总的info信息

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

    info_dict = {}   # 定义一个空字典,用来接收 上面已经 输入的学员信息  
    info_dict['name'] = name   # 结合字典的键值对,让上面输入的name、age、mobile值进来
    info_dict['age'] = age    # 结合字典的键值对,让上面输入的name、age、mobile值进来
    info_dict['mobile'] = mobile   # 结合字典的键值对,让上面输入的name、age、mobile值进来
    #  info 是学员信息列表格式 [],info_dict是字典格式{},二者用append结合,就是整体。
    info.append(info_dict)

    print(info)

# info 是学员信息列表格式 [],info_dict是字典格式{},二者用append结合,就是整体。-----效果如下:

删除学员信息代码实现

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

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

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

Python---for循环中的两大关键字break和continue-CSDN博客

del_info函数代码实现


# 删除学员
def del_info():
    """删除学员"""
    # 1. 用户输入要删除的学员的姓名
    del_name = input('请输入要删除的学员的姓名:')

    global info
    # 2. 判断学员是否存在info(列表+字典格式中):如果输入的姓名存在则删除,否则报错提示
    # info中的字典:[{'name':'老王'},{'age':18},{'mobile':10086},]
    for i in info:
        #  i['name']就是i的下标从第一个开始循环遍历,每个i对应的 key 键是不是 = name,
        # 如果等于输入的要删除的,那就删除,没有,就报错提示。
        if del_name == i['name']:
            info.remove(i)   # remove 删除方法,直接把整个对应的字典删除
            break   # break终止,后面的else不运行
    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:
        #  i['name']就是i的下标从第一个开始循环遍历,每个i对应的 key 键是不是 = name,
        # 如果等于输入的要删除的,那就删除,没有,就报错提示。
        if modify_name == i['name']:
            i['mobile'] = input('请输入新的手机号:')
            i['age'] = 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

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

整体代码:


# 先定义一个函数,就是开头显示的,介绍这个系统功能,以及所有可选菜单
def print_info():
    print('-' * 20)
    print('欢迎登录学员管理系统')
    print('1: 添加学员信息')
    print('2: 删除学员信息')
    print('3: 修改学员信息')
    print('4: 查询学员信息')
    print('5: 遍历输出所有学员信息')
    print('6: 退出系统')
    print('-' * 20)



info = []    # 添加学员信息,关于学员信息,用列表+字典保存最合适。

def add_info():
    """ 添加学员信息 """
    name = input('请输入学员姓名:')
    age = input('请输入学员年龄:')
    mobile = input('请输入学员电话:')

    global info   #  设置全局变量,让之后的每个函数,都用到这一个总的info信息

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

    info_dict = {}   # 定义一个空字典,用来接收 上面已经 输入的学员信息
    info_dict['name'] = name   # 结合字典的键值对,让上面输入的name、age、mobile值进来
    info_dict['age'] = age    # 结合字典的键值对,让上面输入的name、age、mobile值进来
    info_dict['mobile'] = mobile   # 结合字典的键值对,让上面输入的name、age、mobile值进来
    #  info 是学员信息列表格式 [],info_dict是字典格式{},二者用append结合,就是整体。
    info.append(info_dict)

    print(info)


# 删除学员
def del_info():
    """删除学员"""
    # 1. 用户输入要删除的学员的姓名
    del_name = input('请输入要删除的学员的姓名:')

    global info
    # 2. 判断学员是否存在info(列表+字典格式中):如果输入的姓名存在则删除,否则报错提示
    # info中的字典:[{'name':'老王'},{'age':18},{'mobile':10086},]
    for i in info:
        #  i['name']就是i的下标从第一个开始循环遍历,每个i对应的 key 键是不是 = name,
        # 如果等于输入的要删除的,那就删除,没有,就报错提示。
        if del_name == i['name']:
            info.remove(i)   # remove 删除方法,直接把整个对应的字典删除
            break   # break终止,后面的else不运行
    else:
        print('该学员不存在')

    print(info)

# 修改函数
def modify_info():
    """修改函数"""
    # 1. 用户输入要修改的学员的姓名
    modify_name = input('请输入要修改的学员的姓名:')

    global info
    # 2. 判断学员是否存在:如果输入的姓名存在则修改手机号、年龄,否则报错提示
    for i in info:
        #  i['name']就是i的下标从第一个开始循环遍历,每个i对应的 key 键是不是 = name,
        # 如果等于输入的要删除的,那就删除,没有,就报错提示。
        if modify_name == i['name']:
            i['mobile'] = input('请输入新的手机号:')
            i['age'] = input('请输入新的年龄:')
            break
    else:
        print('该学员不存在')

    print(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('该学员不存在')

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

    for i in info:
        print(f"姓名:{i['name']},年龄:{i['age']},电话:{i['mobile']}")



#  要一直   循环输出功能菜单---用while True  死循环
while True:
    print_info()   # 调用的,和下面用户自己输入的,因为都是一直调用,输入,所以都在死循环内
    # 上面调用的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('退出系统')
        flag = input('确认退出么? 确认请输入【yes】:')
        if flag == 'yes':
            break
    else:
        print('信息输入错误')


http://www.kler.cn/a/146692.html

相关文章:

  • ubuntu下怎么设置机器程序开机自启?
  • python蓝桥杯刷题2
  • vscode remote-ssh直连docker容器
  • Pytest-Bdd-Playwright 系列教程(10):配置功能文件路径 优化场景定义
  • 小试牛刀-Anchor安装和基础测试
  • CC工具箱使用指南:【CAD导出界址点Excel】
  • Mindomo Desktop for Mac免费思维导图软件,助您高效整理思维
  • Linux系统---僵尸进程、孤儿进程
  • Linux网络——数据链路层
  • Node.js入门指南(四)
  • Open Feign 源码解析(一) --- FactoryBean的妙用
  • 《尚品甄选》:后台系统——结合redis实现用户登录
  • sqli-labs(4)
  • 【Docker】从零开始:12.容器数据卷
  • 入侵redis之准备---VMware上面安装部署centos7镜像系统【详细含云盘镜像】
  • Pinctrl子系统和GPIO子系统实验
  • ESP32 ESP-IDF5.1 在Visual Studio Code中自定义分区表与调整Flash大小
  • 第二证券:煤炭板块震荡走高 潞安环能、晋控煤业涨超5%
  • Flask Paginate实现表格分页
  • 计算机基础知识详细讲解
  • Selenium中常用的JS操作总结
  • 详解Java中的泛型(泛型的语法,擦除机制,泛型的上界)
  • 【中间件】消息队列中间件intro
  • OpenCV快速入门:图像分析——图像分割和图像修复
  • 【古诗生成AI实战】之三——任务加载器与预处理器
  • 《opencv实用探索·二》根据RGB的像素排列来理解图像深度、像素深度和位深度