# 22_ Python基础到实战一飞冲天(二)-python基础(二十二)--名片管理系统案例:cards_tools.py文件

news2025/1/6 18:10:08

22_ Python基础到实战一飞冲天(二)-python基础(二十二)–名片管理系统案例:cards_tools.py文件

一、框架搭建-09-准备名片操作函数修改主文件中函数调用

1、名片管理系统 案例:框架搭建 — cards_tools.py 增加四个新函数 代码

# cards_tools.py

def show_menu():

    """显示菜单"""
    print("*" * 50)
    print("欢迎使用【名片管理系统】 V1.0")
    print("")
    print("1.新增名片")
    print("2.显示全部")
    print("3.搜索名片")
    print("")
    print("0.退出系统")
    print("*" * 50)


def new_card():

    """新增名片"""
    print("-" * 50)
    print("新增名片")


def show_all():

    """显示全部名片"""
    print("-" * 50)
    print("显示全部名片")


def search_card():

    """查询名片"""
    print("-" * 50)
    print("查询名片")

2、名片管理系统 案例:框架搭建 — cards_main.py 导入模块和调用函数 代码

# cards_main.py

import cards_tools

# 添加一个无限循环,由用户主动决定什么时候退出循环
while True:

    # TODO(小明) 显示功能菜单
    cards_tools.show_menu()

    action_str = input("请选择希望执行的操作:")
    print("您选择的操作是【%s】" % action_str)

    # 1,2,3针对名片的操作
    if action_str in ["1", "2", "3"]:

        # 新增名片
        if action_str == "1":
            cards_tools.new_card()

        # 显示全部
        elif action_str == "2":
            cards_tools.show_all()

        # 查询名片
        elif action_str == "3":
            cards_tools.search_card()

        pass

    # 0 退出系统
    elif action_str == "0":

        print("欢迎再次使用【名片管理系统】")
        break

        # 如果在开发中,不希望立刻编写分支内部的代码,可以使用 pass 关键字
        # pass 表示一个占位符,能够保证程序代码结构正确。
        # 程序运行时,pass关键字不会执行任何操作。
        # pass

    # 其他内容输入错误,需要提示用户
    else:
        print("您输入的不正确,请重新选择")

3、示例

在这里插入图片描述

二、数据结构确定-01-确定名片管理系统的数据结构

1、【名片管理系统】案例:保存名片数据的结构

1)程序就是用来处理数据的,而变量就是用来存储数据的

2)使用 字典 记录 每一张名片 的详细信息。
3)使用 列表 统一记录所有的 名片字典

2、定义名片列表变量

  • cards_tools 文件的顶部增加一个 列表变量
# 所有名片记录的列表
card_list = []

3、注意

1)所有名片相关操作,都需要使用这个列表,所以应该 定义在程序的顶部

2)程序刚运行时,没有数据,所以是 空列表

4、【名片管理系统】全局列表示意图:

在这里插入图片描述

三、新增名片-01-新增名片功能实现

1、新增名片函数(new_card) 功能分析

1)提示用户依次输入名片信息
2)将名片信息保存到一个字典
3)将字典添加到名片列表
4)提示名片添加完成

2、实现 new_card 方法

  • 根据步骤实现代码
def new_card():

    """新建名片"""
    print("-" * 50)
    print("功能:新建名片")

    # 1. 提示用户输入名片信息
    name = input("请输入姓名:")
    phone = input("请输入电话:")
    qq = input("请输入 QQ 号码:")
    email = input("请输入邮箱:")

    # 2. 将用户信息保存到一个字典
    card_dict = {"name": name,
                 "phone": phone,
                 "qq": qq,
                 "email": email}

    # 3. 将用户字典添加到名片列表
    card_list.append(card_dict)

    print(card_list)
    
    # 4. 提示添加成功信息
    print("成功添加 %s 的名片" % card_dict["name"])

3、名片管理系统 案例:— cards_tools.py 代码

# cards_tools.py

# 所有名片记录的列表
card_list = []

def show_menu():

    """显示菜单"""
    print("*" * 50)
    print("欢迎使用【名片管理系统】 V1.0")
    print("")
    print("1.新增名片")
    print("2.显示全部")
    print("3.搜索名片")
    print("")
    print("0.退出系统")
    print("*" * 50)


def new_card():

    """新增名片"""
    print("-" * 50)
    print("新增名片")

    # 1)提示用户依次输入名片信息
    name = input("请输入姓名:")
    phone = input("请输入电话:")
    qq = input("请输入qq号码:")
    email = input("请输入email:")

    # 2)将名片信息保存到一个字典
    card_dict = {"name": name,
                 "phone": phone,
                 "qq": qq,
                 "email": email}

    # 3)将字典添加到名片列表
    card_list.append(card_dict)

    # 4)提示名片添加完成
    print(card_list)
    print("添加用户 %s 的名片成功" % name)

def show_all():

    """显示全部名片"""
    print("-" * 50)
    print("显示全部名片")


def search_card():

    """查询名片"""
    print("-" * 50)
    print("查询名片")

4、示例:

在这里插入图片描述

四、新增名片-02-[扩展]PyCharm技巧重命名变量名

1、技巧:在 PyCharm 中,可以使用快捷键 SHIFT + F6 统一修改变量名。

也可以选中变量,右键—》【Refactor】—》【Rename】—》【Rename code occurrences】来统一修改变量名。


2、统一修改变量名 示例

在这里插入图片描述

在这里插入图片描述

五、显示全部-01-遍历列表显示字典明细

1、显示所有名片方法函数(show_all)功能分析

  • 循环遍历名片列表,顺序显示每一个字典的信息。

2、显示所有名片方法函数(show_all)基础代码实现

def show_all():

    """显示全部"""
    print("-" * 50)
    print("功能:显示全部")

    for card_dict in card_list:

        print(card_dict)        
  • 显示效果不好!

3、显示所有名片方法函数(show_all)增加标题和使用 \t 显示,完善代码

def show_all():
    """显示全部"""
    print("-" * 50)
    print("功能:显示全部")

    # 打印表头
    for name in ["姓名", "电话", "QQ", "邮箱"]:
        print(name, end="\t\t")

    print("")

    # 打印分隔线
    print("=" * 50)

# 遍历名片列表依次输出字典信息
    for card_dict in card_list:

        print("%s\t\t%s\t\t%s\t\t%s" % (card_dict["name"],
                                        card_dict["phone"],
                                        card_dict["qq"],
                                        card_dict["email"]))

4、名片管理系统 案例:— cards_tools.py 代码

# cards_tools.py

# 所有名片记录的列表
card_list = []

def show_menu():

    """显示菜单"""
    print("*" * 50)
    print("欢迎使用【名片管理系统】 V1.0")
    print("")
    print("1.新增名片")
    print("2.显示全部")
    print("3.搜索名片")
    print("")
    print("0.退出系统")
    print("*" * 50)


def new_card():

    """新增名片"""
    print("-" * 50)
    print("新增名片")

    # 1)提示用户依次输入名片信息
    name_str = input("请输入姓名:")
    phone_str = input("请输入电话:")
    qq_str = input("请输入qq号码:")
    email_str = input("请输入email:")

    # 2)将名片信息保存到一个字典
    card_dict = {"name": name_str,
                 "phone": phone_str,
                 "qq": qq_str,
                 "email": email_str}

    # 3)将字典添加到名片列表
    card_list.append(card_dict)

    # 4)提示名片添加完成
    print(card_list)
    print("添加用户 %s 的名片成功" % name_str)


def show_all():
    """显示全部名片"""
    print("-" * 50)
    print("功能:显示全部名片")

    # 打印表头
    for name in ["姓名", "电话", "QQ", "邮箱"]:
        print(name, end="\t\t")

    print("")

    # 打印分隔线
    print("=" * 50)

    # 遍历名片列表依次输出字典信息
    for card_dict in card_list:

        print("%s\t\t%s\t\t%s\t\t%s" % (card_dict["name"],
                                        card_dict["phone"],
                                        card_dict["qq"],
                                        card_dict["email"]))


def search_card():

    """查询名片"""
    print("-" * 50)
    print("查询名片")

5、示例:

在这里插入图片描述

六、显示全部-02-判断列表数量,没有名片直接返回

1、在 显示所有名片方法函数(show_all)中,增加没有名片记录判断

def show_all():
    """显示全部名片"""
    print("-" * 50)
    print("功能:显示全部名片")

    # 判断是否有名片记录,如果没有,提示用户并且返回
    if len(card_list) == 0:
        print("提示:没有任何名片记录")

        # 在函数中使用 `return` 表示返回,下方的代码不会再执行。
        # 如果在 `return` 后没有跟任何内容,表示会返回到调用函数位置,并不返回任何结果
        return

    # 打印表头
    for name in ["姓名", "电话", "QQ", "邮箱"]:
        print(name, end="\t\t")

    print("")

    # 打印分隔线
    print("=" * 50)

    # 遍历名片列表依次输出字典信息
    for card_dict in card_list:

        print("%s\t\t%s\t\t%s\t\t%s" % (card_dict["name"],
                                        card_dict["phone"],
                                        card_dict["qq"],
                                        card_dict["email"]))

2、名片管理系统 案例:— cards_tools.py 代码

# cards_tools.py

# 所有名片记录的列表
card_list = []

def show_menu():

    """显示菜单"""
    print("*" * 50)
    print("欢迎使用【名片管理系统】 V1.0")
    print("")
    print("1.新增名片")
    print("2.显示全部")
    print("3.搜索名片")
    print("")
    print("0.退出系统")
    print("*" * 50)


def new_card():

    """新增名片"""
    print("-" * 50)
    print("新增名片")

    # 1)提示用户依次输入名片信息
    name_str = input("请输入姓名:")
    phone_str = input("请输入电话:")
    qq_str = input("请输入qq号码:")
    email_str = input("请输入email:")

    # 2)将名片信息保存到一个字典
    card_dict = {"name": name_str,
                 "phone": phone_str,
                 "qq": qq_str,
                 "email": email_str}

    # 3)将字典添加到名片列表
    card_list.append(card_dict)

    # 4)提示名片添加完成
    print(card_list)
    print("添加用户 %s 的名片成功" % name_str)


def show_all():
    """显示全部名片"""
    print("-" * 50)
    print("功能:显示全部名片")

    # 判断是否有名片记录,如果没有,提示用户并且返回
    if len(card_list) == 0:
        print("提示:没有任何名片记录")

        # 在函数中使用 `return` 表示返回,下方的代码不会再执行。
        # 如果在 `return` 后没有跟任何内容,表示会返回到调用函数位置,并不返回任何结果
        return

    # 打印表头
    for name in ["姓名", "电话", "QQ", "邮箱"]:
        print(name, end="\t\t")

    print("")

    # 打印分隔线
    print("=" * 50)

    # 遍历名片列表依次输出字典信息
    for card_dict in card_list:

        print("%s\t\t%s\t\t%s\t\t%s" % (card_dict["name"],
                                        card_dict["phone"],
                                        card_dict["qq"],
                                        card_dict["email"]))


def search_card():

    """查询名片"""
    print("-" * 50)
    print("查询名片")

3、示例:

在这里插入图片描述

七、查询名片-01-查询功能实现

1、查询名片方法函数(search_card)功能分析

1)提示用户要搜索的姓名
2)根据用户输入的姓名遍历列表
3)搜索到指定的名片后,再执行后续的操作

2、查询名片方法函数(search_card)代码实现

  • 查询功能实现
def search_card():

    """搜索名片"""
    print("-" * 50)
    print("功能:搜索名片")

    # 1. 提示要搜索的姓名
    find_name = input("请输入要搜索的姓名:")

    # 2. 遍历名片列表,查询要搜索的姓名,如果没找到,提示用户
    for card_dict in card_list:

        if card_dict["name"] == find_name:

            print("姓名\t\t\t电话\t\t\tQQ\t\t\t邮箱")
            print("-" * 40)
            
            print("%s\t\t\t%s\t\t\t%s\t\t\t%s" % (
                card_dict["name"],
                card_dict["phone"],
                card_dict["qq"],
                card_dict["email"]))

            print("-" * 40)
            
            # TODO(小明) 针对找到的字典进行后续操作:修改/删除

            break
    else:
        print("没有找到 %s" % find_name)

3、名片管理系统 案例:— cards_tools.py 代码

# cards_tools.py

# 所有名片记录的列表
card_list = []

def show_menu():

    """显示菜单"""
    print("*" * 50)
    print("欢迎使用【名片管理系统】 V1.0")
    print("")
    print("1.新增名片")
    print("2.显示全部")
    print("3.搜索名片")
    print("")
    print("0.退出系统")
    print("*" * 50)


def new_card():

    """新增名片"""
    print("-" * 50)
    print("新增名片")

    # 1)提示用户依次输入名片信息
    name_str = input("请输入姓名:")
    phone_str = input("请输入电话:")
    qq_str = input("请输入qq号码:")
    email_str = input("请输入email:")

    # 2)将名片信息保存到一个字典
    card_dict = {"name": name_str,
                 "phone": phone_str,
                 "qq": qq_str,
                 "email": email_str}

    # 3)将字典添加到名片列表
    card_list.append(card_dict)

    # 4)提示名片添加完成
    print(card_list)
    print("添加用户 %s 的名片成功" % name_str)


def show_all():
    """显示全部名片"""
    print("-" * 50)
    print("功能:显示全部名片")

    # 判断是否有名片记录,如果没有,提示用户并且返回
    if len(card_list) == 0:
        print("提示:没有任何名片记录")

        # 在函数中使用 `return` 表示返回,下方的代码不会再执行。
        # 如果在 `return` 后没有跟任何内容,表示会返回到调用函数位置,并不返回任何结果
        return

    # 打印表头
    for name in ["姓名", "电话", "QQ", "邮箱"]:
        print(name, end="\t\t")

    print("")

    # 打印分隔线
    print("=" * 50)

    # 遍历名片列表依次输出字典信息
    for card_dict in card_list:

        print("%s\t\t%s\t\t%s\t\t%s" % (card_dict["name"],
                                        card_dict["phone"],
                                        card_dict["qq"],
                                        card_dict["email"]))


def search_card():

    """搜索名片"""
    print("-" * 50)
    print("功能:搜索名片")

    # 1. 提示要搜索的姓名
    find_name = input("请输入要搜索的姓名:")

    # 2. 遍历名片列表,查询要搜索的姓名,如果没找到,提示用户
    for card_dict in card_list:

        if card_dict["name"] == find_name:

            print("姓名\t\t\t电话\t\t\tQQ\t\t\t邮箱")
            print("-" * 40)

            print("%s\t\t\t%s\t\t\t%s\t\t\t%s" % (
                card_dict["name"],
                card_dict["phone"],
                card_dict["qq"],
                card_dict["email"]))

            print("-" * 40)

            # TODO(小明) 针对找到的字典进行后续操作:修改/删除

            break
    else:
        print("没有找到 %s" % find_name)

4、示例:

在这里插入图片描述

八、查询名片-02-准备处理名片函数

1、在cards_tools.py中,增加名片操作函数

def deal_card(find_dict):

    """操作搜索到的名片字典"""
print(find_dict)

2、名片管理系统 案例:— cards_tools.py 代码

# cards_tools.py

# 所有名片记录的列表
card_list = []

def show_menu():

    """显示菜单"""
    print("*" * 50)
    print("欢迎使用【名片管理系统】 V1.0")
    print("")
    print("1.新增名片")
    print("2.显示全部")
    print("3.搜索名片")
    print("")
    print("0.退出系统")
    print("*" * 50)


def new_card():

    """新增名片"""
    print("-" * 50)
    print("新增名片")

    # 1)提示用户依次输入名片信息
    name_str = input("请输入姓名:")
    phone_str = input("请输入电话:")
    qq_str = input("请输入qq号码:")
    email_str = input("请输入email:")

    # 2)将名片信息保存到一个字典
    card_dict = {"name": name_str,
                 "phone": phone_str,
                 "qq": qq_str,
                 "email": email_str}

    # 3)将字典添加到名片列表
    card_list.append(card_dict)

    # 4)提示名片添加完成
    print(card_list)
    print("添加用户 %s 的名片成功" % name_str)


def show_all():
    """显示全部名片"""
    print("-" * 50)
    print("功能:显示全部名片")

    # 判断是否有名片记录,如果没有,提示用户并且返回
    if len(card_list) == 0:
        print("提示:没有任何名片记录")

        # 在函数中使用 `return` 表示返回,下方的代码不会再执行。
        # 如果在 `return` 后没有跟任何内容,表示会返回到调用函数位置,并不返回任何结果
        return

    # 打印表头
    for name in ["姓名", "电话", "QQ", "邮箱"]:
        print(name, end="\t\t")

    print("")

    # 打印分隔线
    print("=" * 50)

    # 遍历名片列表依次输出字典信息
    for card_dict in card_list:

        print("%s\t\t%s\t\t%s\t\t%s" % (card_dict["name"],
                                        card_dict["phone"],
                                        card_dict["qq"],
                                        card_dict["email"]))


def search_card():

    """搜索名片"""
    print("-" * 50)
    print("功能:搜索名片")

    # 1. 提示要搜索的姓名
    find_name = input("请输入要搜索的姓名:")

    # 2. 遍历名片列表,查询要搜索的姓名,如果没找到,提示用户
    for card_dict in card_list:

        if card_dict["name"] == find_name:

            print("姓名\t\t\t电话\t\t\tQQ\t\t\t邮箱")
            print("-" * 40)

            print("%s\t\t\t%s\t\t\t%s\t\t\t%s" % (
                card_dict["name"],
                card_dict["phone"],
                card_dict["qq"],
                card_dict["email"]))

            print("-" * 40)

            # TODO(小明) 针对找到的字典进行后续操作:修改/删除
            deal_card(card_dict)

            break
    else:
        print("没有找到 %s" % find_name)


def deal_card(find_dict):

    """操作搜索到的名片字典"""
    print(find_dict)

3、示例:

在这里插入图片描述

九、处理名片-01-增加分支判断用户操作类型

1、在cards_tools.py中,增加名片操作函数修改/删除/返回主菜单

def deal_card(find_dict):

    """操作搜索到的名片字典
    :param find_dict:找到的名片字典
    """
    print(find_dict)

    action_str = input("请选择要执行的操作 "
                       "[1] 修改 [2] 删除 [0] 返回上级菜单")

    if action_str == "1":
        print("修改名片")
    elif action_str == "2":
        print("删除名片")

2、名片管理系统 案例:— cards_tools.py 代码

# cards_tools.py

# 所有名片记录的列表
card_list = []

def show_menu():

    """显示菜单"""
    print("*" * 50)
    print("欢迎使用【名片管理系统】 V1.0")
    print("")
    print("1.新增名片")
    print("2.显示全部")
    print("3.搜索名片")
    print("")
    print("0.退出系统")
    print("*" * 50)


def new_card():

    """新增名片"""
    print("-" * 50)
    print("新增名片")

    # 1)提示用户依次输入名片信息
    name_str = input("请输入姓名:")
    phone_str = input("请输入电话:")
    qq_str = input("请输入qq号码:")
    email_str = input("请输入email:")

    # 2)将名片信息保存到一个字典
    card_dict = {"name": name_str,
                 "phone": phone_str,
                 "qq": qq_str,
                 "email": email_str}

    # 3)将字典添加到名片列表
    card_list.append(card_dict)

    # 4)提示名片添加完成
    print(card_list)
    print("添加用户 %s 的名片成功" % name_str)


def show_all():
    """显示全部名片"""
    print("-" * 50)
    print("功能:显示全部名片")

    # 判断是否有名片记录,如果没有,提示用户并且返回
    if len(card_list) == 0:
        print("提示:没有任何名片记录")

        # 在函数中使用 `return` 表示返回,下方的代码不会再执行。
        # 如果在 `return` 后没有跟任何内容,表示会返回到调用函数位置,并不返回任何结果
        return

    # 打印表头
    for name in ["姓名", "电话", "QQ", "邮箱"]:
        print(name, end="\t\t")

    print("")

    # 打印分隔线
    print("=" * 50)

    # 遍历名片列表依次输出字典信息
    for card_dict in card_list:

        print("%s\t\t%s\t\t%s\t\t%s" % (card_dict["name"],
                                        card_dict["phone"],
                                        card_dict["qq"],
                                        card_dict["email"]))


def search_card():

    """搜索名片"""
    print("-" * 50)
    print("功能:搜索名片")

    # 1. 提示要搜索的姓名
    find_name = input("请输入要搜索的姓名:")

    # 2. 遍历名片列表,查询要搜索的姓名,如果没找到,提示用户
    for card_dict in card_list:

        if card_dict["name"] == find_name:

            print("姓名\t\t\t电话\t\t\tQQ\t\t\t邮箱")
            print("-" * 40)

            print("%s\t\t\t%s\t\t\t%s\t\t\t%s" % (
                card_dict["name"],
                card_dict["phone"],
                card_dict["qq"],
                card_dict["email"]))

            print("-" * 40)

            # TODO(小明) 针对找到的字典进行后续操作:修改/删除
            deal_card(card_dict)

            break
    else:
        print("没有找到 %s" % find_name)


def deal_card(find_dict):

    """操作搜索到的名片字典
    :param find_dict:找到的名片字典
    """
    print(find_dict)

    action_str = input("请选择要执行的操作 "
                       "[1] 修改 [2] 删除 [0] 返回上级菜单")

    if action_str == "1":
        print("修改名片")
    elif action_str == "2":
        print("删除名片")

3、示例

在这里插入图片描述

十、处理名片-02-删除名片

1、在cards_tools.py中的增加名片操作函数()中,完成 删除 操作。

def deal_card(find_dict):

    """操作搜索到的名片字典
    :param find_dict:找到的名片字典
    """
    print(find_dict)

    action_str = input("请选择要执行的操作 "
                       "[1] 修改 [2] 删除 [0] 返回上级菜单")

    if action_str == "1":
        print("修改名片")

    elif action_str == "2":

        card_list.remove(find_dict)

        print("删除名片成功!")

2、名片管理系统 案例:— cards_tools.py 代码

# cards_tools.py

# 所有名片记录的列表
card_list = []

def show_menu():

    """显示菜单"""
    print("*" * 50)
    print("欢迎使用【名片管理系统】 V1.0")
    print("")
    print("1.新增名片")
    print("2.显示全部")
    print("3.搜索名片")
    print("")
    print("0.退出系统")
    print("*" * 50)


def new_card():

    """新增名片"""
    print("-" * 50)
    print("新增名片")

    # 1)提示用户依次输入名片信息
    name_str = input("请输入姓名:")
    phone_str = input("请输入电话:")
    qq_str = input("请输入qq号码:")
    email_str = input("请输入email:")

    # 2)将名片信息保存到一个字典
    card_dict = {"name": name_str,
                 "phone": phone_str,
                 "qq": qq_str,
                 "email": email_str}

    # 3)将字典添加到名片列表
    card_list.append(card_dict)

    # 4)提示名片添加完成
    print(card_list)
    print("添加用户 %s 的名片成功" % name_str)


def show_all():
    """显示全部名片"""
    print("-" * 50)
    print("功能:显示全部名片")

    # 判断是否有名片记录,如果没有,提示用户并且返回
    if len(card_list) == 0:
        print("提示:没有任何名片记录")

        # 在函数中使用 `return` 表示返回,下方的代码不会再执行。
        # 如果在 `return` 后没有跟任何内容,表示会返回到调用函数位置,并不返回任何结果
        return

    # 打印表头
    for name in ["姓名", "电话", "QQ", "邮箱"]:
        print(name, end="\t\t")

    print("")

    # 打印分隔线
    print("=" * 50)

    # 遍历名片列表依次输出字典信息
    for card_dict in card_list:

        print("%s\t\t%s\t\t%s\t\t%s" % (card_dict["name"],
                                        card_dict["phone"],
                                        card_dict["qq"],
                                        card_dict["email"]))


def search_card():

    """搜索名片"""
    print("-" * 50)
    print("功能:搜索名片")

    # 1. 提示要搜索的姓名
    find_name = input("请输入要搜索的姓名:")

    # 2. 遍历名片列表,查询要搜索的姓名,如果没找到,提示用户
    for card_dict in card_list:

        if card_dict["name"] == find_name:

            print("姓名\t\t\t电话\t\t\tQQ\t\t\t邮箱")
            print("-" * 40)

            print("%s\t\t\t%s\t\t\t%s\t\t\t%s" % (
                card_dict["name"],
                card_dict["phone"],
                card_dict["qq"],
                card_dict["email"]))

            print("-" * 40)

            # TODO(小明) 针对找到的字典进行后续操作:修改/删除
            deal_card(card_dict)

            break
    else:
        print("没有找到 %s" % find_name)


def deal_card(find_dict):

    """操作搜索到的名片字典
    :param find_dict:找到的名片字典
    """
    print(find_dict)

    action_str = input("请选择要执行的操作 "
                       "[1] 修改 [2] 删除 [0] 返回上级菜单")

    if action_str == "1":
        print("修改名片")

    elif action_str == "2":

        card_list.remove(find_dict)

        print("删除名片成功!")

3、名片管理系统 案例:— cards_main.py 代码

# cards_main.py

import cards_tools

# 添加一个无限循环,由用户主动决定什么时候退出循环
while True:

    # TODO(小明) 显示功能菜单
    cards_tools.show_menu()

    action_str = input("请选择希望执行的操作:")
    print("您选择的操作是【%s】" % action_str)

    # 1,2,3针对名片的操作
    if action_str in ["1", "2", "3"]:

        # 新增名片
        if action_str == "1":
            cards_tools.new_card()

        # 显示全部
        elif action_str == "2":
            cards_tools.show_all()

        # 查询名片
        elif action_str == "3":
            cards_tools.search_card()

        pass

    # 0 退出系统
    elif action_str == "0":

        print("欢迎再次使用【名片管理系统】")
        break

        # 如果在开发中,不希望立刻编写分支内部的代码,可以使用 pass 关键字
        # pass 表示一个占位符,能够保证程序代码结构正确。
        # 程序运行时,pass关键字不会执行任何操作。
        # pass

    # 其他内容输入错误,需要提示用户
    else:
        print("您输入的不正确,请重新选择")

4、示例

在这里插入图片描述

上一节关联链接请点击:

21_ Python基础到实战一飞冲天(二)-python基础(二十一)–名片管理系统案例框架搭建

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python 和 Pyecharts 对Taptap相关数据可视化分析

结果展示: 数据来源: Python爬取TapTap 热门游戏信息并存储到数据库(详细版) 目录 结果展示: 数据来源: Python爬取TapTap 热门游戏信息并存储到数据库(详细版 一、引言 二、准备工作 三、…

泷羽sec-shell (3)脚本参数传递与数学运算

声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&a…

重塑视频新语言,让每一帧都焕发新生——Video-Retalking,开启数字人沉浸式交流新纪元!

模型简介 Video-Retalking 模型是一种基于深度学习的视频再谈话技术,它通过分析视频中的音频和图像信息,实现视频角色口型、表情乃至肢体动作的精准控制与合成。这一技术的实现依赖于强大的技术架构和核心算法,特别是生成对抗网络&#xff0…

Mybatis Plus 增删改查方法(一、增)

先定义一个简单的测试表,执行脚本如下: create table user(id bigint primary key auto_increment,name varchar(255) not null,age int not null default 0 check (age > 0) ); 根据Spingbootmybatisplus的结构根据表自行构建结构,大致…

依赖倒置原则:Java实践篇

在软件开发的世界里,设计原则如同指南针,指引着我们构建更加健壮、可维护和可扩展的系统。其中,依赖倒置原则(Dependency Inversion Principle,DIP)是面向对象设计(OOD)中的一个重要…

【MySQL】库和表的基本操作

目录 库 库的增删查改 字符集与校验集 库的备份与恢复 表 表的创建和删除 用不同的存储引擎创建表的区别 查看表 修改表 添加删除属性 修改改变属性 上篇博客我们讲了数据库的基本理解,对数据库有了一个大致的概念,下面我们来介绍一下库和表的…

大数据新视界 -- 大数据大厂之 Hive 函数库:丰富函数助力数据处理(上)(11/ 30)

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

03.ES7 04.ES8

3.1.Array.includes Includes 方法用来检测数组中是否包含某个元素&#xff0c;返回布尔类型值 <script>// includes const mingzhu [王二,张三,李四,王五];//判断console.log(mingzhu.includes(张三));//trueconsole.log(mingzhu.includes(周六));//false//indexOf …

中国科学院大学研究生学术英语读写教程 Unit7 Materials Science TextA 原文和翻译

中国科学院大学研究生学术英语读写教程 Unit7 Materials Science TextA 原文和翻译 Why Is the Story of Materials Really the Story of Civilisation? 为什么材料的故事实际上就是文明的故事&#xff1f; Mark Miodownik 1 Everything is made of something. Take away co…

下载安装Android Studio

&#xff08;一&#xff09;Android Studio下载地址 https://developer.android.google.cn/studio 滑动到 点击下载文档 打开新网页 切换到english ![](https://i-blog.csdnimg.cn/direct/b7052b434f9d4418b9d56c66cdd59fae.png 等待一会&#xff0c;出现 点同意后&#xff0…

【解决方案】pycharm出现 为项目选择的Python解释器无效

文章目录 1.问题重述2.解决方案END 1.问题重述 第二次启动项目的时候出现 2.解决方案 右下角点 先选无解释器&#xff0c;然后在用项目配置好的解释器&#xff0c;然后就好了&#xff0c;估计是第二次启动的时候没有识别到&#xff0c;UI的信号设置的问题 END

浏览器的数据六种存储方法比较 :LocalStorage vs. IndexedDB vs. Cookies vs. OPFS vs. WASM-SQLite

在构建该 Web 应用程序&#xff0c;并且希望将数据存储在用户浏览器中。也许您只需要存储一些小标志&#xff0c;或者甚至需要一个成熟的数据库。 我们构建的 Web 应用程序类型发生了显着变化。在网络发展的早期&#xff0c;我们提供静态 html 文件。然后我们提供动态渲染的 h…

linux一键部署apache脚本

分享一下自己制作的一键部署apache脚本&#xff1a; 脚本已和当前文章绑定&#xff0c;请移步下载&#xff08;免费&#xff01;免费&#xff01;免费&#xff01;&#xff09; &#xff08;单纯的分享&#xff01;&#xff09; 步骤&#xff1a; 将文件/内容上传到终端中 …

Java ConcurrentHashMap

Java Map本质不是线程安全的&#xff0c;HashTable和Collections同步包装器&#xff08;Synchronized Wrapper&#xff09;在并发场景下性能低。Java还为实现 Map 的线程安全提供了并发包&#xff0c;保证线程安全的方式从synchronize简单方式到精细化&#xff0c;比如Concurre…

redis下载、基础数据类型、操作讲解说明,持久化、springboot整合等

1 Redis是什么 官网&#xff1a;https://redis.io 开发者&#xff1a;Antirez Redis诞生于2009年全称是Remote Dictionary Server 远程词典服务器&#xff0c;是一个基于内存的键值型NoSQL数据库。 Redis是一个开源的、高性能的键值对存储系统&#xff0c;它支持多种数据结构&…

C# 解决【托管调试助手 “ContextSwitchDeadlock“:……】问题

文章目录 一、遇到问题二、解决办法 一、遇到问题 托管调试助手 “ContextSwitchDeadlock”:“CLR 无法从 COM 上下文 0x56e81e70 转换为 COM 上下文 0x56e81d48&#xff0c;这种状态已持续 60 秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送 Windows …

系统学习算法: 专题二 滑动窗口

题目一&#xff1a; 算法原理&#xff1a; 依然第一反应是暴力枚举&#xff0c;将所有的子数组都枚举出来&#xff0c;找到满足条件的长度最小的子数组&#xff0c;但是需要两层循环&#xff0c;时间复杂度来到O&#xff08;N^2&#xff09; 接下来就该思考如何进行优化 如果…

QGIS制作xyz切片(mbtiles)

MBTiles是由MapBox制定的一种将瓦片地图数据存储到SQLite数据库中并可快速使用&#xff0c;管理和分享的规范。它使得数以百万的瓦片数据存储在一个文件中&#xff0c;而且SQLite数据库支持多种平台&#xff0c;所以使用MBTiles在移动设备上浏览瓦片数据是比较理想的方式。 QGI…

软件测试——性能测试工具JMeter

1.JMeter介绍 Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件。JMeter小巧轻便且免费&#xff0c;逐渐成为了主流的性能测试工具&#xff0c;是每个测试人员都必须要掌握的工具之一。 环境要求&#xff1a; ​ 需要Java8或者更高的版本。 1.1 JMeter的下…

【C++算法】20.二分查找算法_x 的平方根

文章目录 题目链接&#xff1a;题目描述&#xff1a;解法C 算法代码&#xff1a;图解 题目链接&#xff1a; 69. x 的平方根 题目描述&#xff1a; 解法 暴力解法&#xff1a; 如果x17 从1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5......这些数里面找他们的平方…