python 基础综合应用——小开发

news/2024/7/8 4:48:05 标签: python, 开发语言

#python 基础综合应用——小开发
综合复习

  • 变量- 循环- 函数- 模块
    开发 名片管理系统

名片管理系统介绍

名片管理系统可以理解成花名册软件,通过个人新建人的信息后可以进行查询等简单操作的程序

名片管理系统有三个作用,

1.新建名片

2.显示全部名片

3.查询名片

欢迎使用【名片管理系统】V1.0

1. 新建名片

2. 显示全部

3. 查询名片

0. 退出系统

名片管理系统的开发

1.框架的搭建

在我们开发程序的时候都需要做的事情就是构建框架

构建框架首先需要做的就是准备文件(文件需要的是主文件和工具文件),还需要准备一些基本的代码能够简单运行起来

对于**准备文件,主文件是main文件,**所有的操作都要经过这里启动

对于**工具文件,**就是对于这个程序进行其他操作(删除,增添)

先创建 一个main文件

无限循环

  • 在开发软件时,如果 不希望程序执行后 立即退出 - 可以在程序中增加一个 无限循环 - 由用户来决定 退出程序的时机
    当用户输入数字进行程序之后,即为正确运行,那对于**正确(true)**之后主文件进行后续的操作
​
while True:
​
    # TODO(小明) 显示系统菜单
​
    action = input("请选择操作功能:")
​
    print("您选择的操作是:%s" % action)
​
    # 根据用户输入决定后续的操作
    if action in ["1", "2", "3"]:
        pass
    elif action == "0":
        print("欢迎再次使用【名片管理系统】")
​
        break
    else:
        print("输入错误,请重新输入")
​

在这里需要注意的是

  1. 使用 in 针对 列表 判断,避免使用 or 拼接复杂的逻辑条件 1. 没有使用 int 转换用户输入,可以避免 一旦用户输
  • pass 就是一个空语句,不做任何事情,一般用做占位语句 - 是为了保持程序结构的完整性
    对于工具文件

在名片管理系统中,工具文件的作用就是

1.显示菜单

2.新建名片

3.显示全部

4.搜索名片

所以对于工具文件,我们采取的方式是,创造四个函数

def show_menu():
​
    """显示菜单"""
    pass
​
def new_card():
​
    """新建名片"""
    print("-" * 50)
    print("功能:新建名片")
​
​
def show_all():
​
    """显示全部"""
    print("-" * 50)
    print("功能:显示全部")
​
​
def search_card():
​
    """搜索名片"""
    print("-" * 50)
    print("功能:搜索名片")
​

注意:三个引号的作用是一个一个输出

在做好主文件和工具文件之后我们应该进行的操作是将工具文件的四个函数导入进行优化操作

import

import cards_tools
​
while True:
​
    cards_tools.show_menu()
​
    action = input("请选择操作功能:")
​
    print("您选择的操作是:%s" % action)
​
    # 根据用户输入决定后续的操作
    if action in ["1", "2", "3"]:
​
        if action == "1":
            cards_tools.new_card()
​
        elif action == "2":
            cards_tools.show_all()
​
        elif action == "3":
            cards_tools.search_card()
​
    elif action == "0":
        print("欢迎再次使用【名片管理系统】")
​
        break
    else:
        print("输入错误,请重新输入:")
​

至此我们的名片管理系统的操作就大致**完成了 **

接下来就是完善每一个工具文件的函数操作

2.新建名片

之前的文章说过,程序是用来运行数据的,变量是存储数据的

那么我们用户需要新建名片那么就,需要保存信息到字典中,将名片字典添加到列表中,这个时候我们用户就添加成功

定义名片列表变量
  • 在 cards_tools 文件的顶部增加一个 列表变量

  • python"># 所有名片记录的列表
    card_list = []
    python">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.显示所有名片

若想显示所有名片,现在的情况是名片字典全部放到列表中,所以说我们可以直接把列表全部输出即可注意:为了有更好的显示效果,我们应该制作表头的分割线方便用户观看,则有如下代码

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 show_all():
    """显示全部
    """
    print("-" * 50)
    print("功能:显示全部")
​
    # 1. 判断是否有名片记录
    if len(card_list) == 0:
        print("提示:没有任何名片记录")
​
        return
​

return可以返回一个函数的结果

下方代码不会被执行 ,这样子就避免了后续操作,用户可以直接了解到,没有名片代码的记录,提示用户并且返回

4.查询名片

  1. 提示用户要搜索的姓名 1. 根据用户输入的姓名遍历列表 1. 搜索到指定的名片后,再执行后续的操作
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)
​

for遍历后不是通过break出来**则执行else分支 **

增加名片操作函数:修改/删除/返回主菜单

def deal_card(find_dict):
​
    """操作搜索到的名片字典
​
    :param find_dict:找到的名片字典
    """
    print(find_dict)
​
    action_str = input("请选择要执行的操作 "
                       "[1] 修改 [2] 删除 [0] 返回上级菜单")
​
    if action == "1":
        print("修改")
    elif action == "2":
        print("删除")
​

5.查询成功后修改删除名片

删除列表里面的字典即可

  • 由于找到的字典记录已经在列表中保存 - 要删除名片记录,只需要把列表中对应的字典删除即可
    elif action == "2":
        card_list.remove(find_dict)
​
        print("删除成功")
  • 由于找到的字典记录已经在列表中保存 - 要修改名片记录,只需要把列表中对应的字典中每一个键值对的数据修改即可
    if action == "1":
​
        find_dict["name"] = input("请输入姓名:")
        find_dict["phone"] = input("请输入电话:")
        find_dict["qq"] = input("请输入QQ:")
        find_dict["email"] = input("请输入邮件:")
​
        print("%s 的名片修改成功" % find_dict["name"])
​

如果用户在使用时,某些名片内容并不想修改,应该如何做呢?—— 既然系统提供的 input 函数不能满足需求,那么就新定义一个函数 input_card_info 对系统的 input 函数进行扩展

def input_card_info(dict_value, tip_message):
​
    """输入名片信息
​
    :param dict_value: 字典原有值
    :param tip_message: 输入提示信息
    :return: 如果输入,返回输入内容,否则返回字典原有值
    """
    # 1. 提示用户输入内容
    result_str = input(tip_message)
​
    # 2. 针对用户的输入进行判断,如果用户输入了内容,直接返回结果
    if len(result_str) > 0:
​
        return result_str
    # 3. 如果用户没有输入内容,返回 `字典中原有的值`
    else:
​
        return dict_value
​

python_371">6.让python程序直接运行

cards_input.py

def input_card_info(dict_value, tip_message):
 
    """输入名片信息
    :param dict_value: 字典中原有的值
    :param tip_message: 输入的提示文字
    :return: 如果用户输入了内容,就返回内容,否则返回字典中原有的值
    """
    # 1. 提示用户输入内容
    result_str = input(tip_message)
 
    # 2. 针对用户的输入进行判断,如果用户输入了内容,直接返回结果
    if len(result_str) > 0:
 
        return result_str
    # 3. 如果用户没有输入内容,返回 `字典中原有的值`
    else:
        return dict_value

cards_main.py

#!/usr/bin/python3
import cards_tools
 
while True:
 
    cards_tools.show_menu()
 
    action = input("请选择操作功能:")
 
    print("您选择的操作是:%s" % action)
 
    # 根据用户输入决定后续的操作
    if action in ["1", "2", "3"]:
 
        if action == "1":
            cards_tools.new_card()
 
        elif action == "2":
            cards_tools.show_all()
 
        elif action == "3":
            cards_tools.search_card()
 
    elif action == "0":
        print("欢迎再次使用【名片管理系统】")
 
        break
    else:
        print("输入错误,请重新输入:")

cards_tools.py

import cards_input
 
# 所有名片记录的列表
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("请输入邮箱:")
 
    # 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"])
 
 
def show_all():
 
    """显示全部
    """
    print("-" * 50)
    print("功能:显示全部")
 
    # 1. 判断是否有名片记录
    if len(card_list) == 0:
        print("提示:没有任何名片记录")
 
        return
 
    # 2. 显示所有名片
    print("姓名\t\t电话\t\tQQ\t\t邮箱")
    print("-" * 60)
 
    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"]))
 
    print("-" * 60)
 
 
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\tQQ\t\t邮箱")
            print("-" * 60)
 
            print("%s\t\t%s\t\t%s\t\t%s" % (
                card_dict["name"],
                card_dict["phone"],
                card_dict["qq"],
                card_dict["email"]))
 
            print("-" * 60)
 
            deal_card(card_dict)
 
            break
    else:
        print("没有找到 %s" % find_name)
 
 
def deal_card(find_dict):
 
    """操作搜索到的名片字典
    :param find_dict:名片字典
    """
 
    action_str = input("请输入对名片的操作:1: 修改/ 2: 删除/ 0: 返回上级菜单")
 
    if action_str == "1":
 
        find_dict["name"] = cards_input.input_card_info(find_dict["name"],
                                                        "请输入姓名[回车不修改]:")
        find_dict["phone"] = cards_input.input_card_info(find_dict["phone"],
                                                         "请输入电话[回车不修改]:")
        find_dict["qq"] = cards_input.input_card_info(find_dict["qq"],
                                                      "请输入QQ[回车不修改]:")
        find_dict["email"] = cards_input.input_card_info(find_dict["email"],
                                                         "请输入邮箱[回车不修改]:")
 
        print("%s 的名片修改成功!" % find_dict["name"])
    elif action_str == "2":
 
        card_list.remove(find_dict)
 
        print("删除名片成功!")


http://www.niftyadmin.cn/n/5536547.html

相关文章

MATLAB基础应用精讲-【数模应用】 岭回归(Ridge)(附MATLAB、python和R语言代码实现)

目录 前言 算法原理 数学模型 Ridge 回归的估计量 Ridge 回归与标准多元线性回归的比较 3. Ridge 参数的选择 算法步骤 SPSSPRO 1、作用 2、输入输出描述 3、案例示例 4、案例数据 5、案例操作 6、输出结果分析 7、注意事项 8、模型理论 SPSSAU 岭回归分析案…

著作出版丨四本著作征集编委

征集第一主编、第二主编、第三主编,新闻出版总署可查,CIP可查。 同时征集副主编,性价比高,出版社可查。 计算机人工智能与网络发展探索缺2、3 档案信息化资源开发与管理探究缺2主 测量技术与测绘工程管理实践缺1、2 智能建筑设计…

C++ | Leetcode C++题解之第213题打家劫舍II

题目&#xff1a; 题解&#xff1a; class Solution { public:int robRange(vector<int>& nums, int start, int end) {int first nums[start], second max(nums[start], nums[start 1]);for (int i start 2; i < end; i) {int temp second;second max(fi…

Kubernetes的发展历程:从Google内部项目到云原生计算的基石

目录 一、起源与背景 1.1 Google的内部项目 1.2 Omega的出现 二、Kubernetes的诞生 2.1 开源的决策 2.2 初期发布 三、Kubernetes的发展历程 3.1 社区的成长 3.2 生态系统的壮大 3.3 重大版本和功能 3.4 多云和混合云的支持 四、Kubernetes的核心概念 4.1 Pod 4.…

sqlalchemy Lost connection to MySQL server during query

文章参考 遇到 “Lost connection to MySQL server during query” 的错误通常与多种因素有关&#xff0c;这些因素可能包括网络问题、MySQL服务器配置、SQLAlchemy的使用方式等。以下是一些解决此问题的步骤和建议&#xff1a; 1. 检查网络连接 确保你的应用程序能够稳定地…

二手物品交易小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;管理员管理&#xff0c;商品信息管理&#xff0c;论坛管理&#xff0c;收货地址管理&#xff0c;基础数据管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;商品信息&…

springboot项目怎么样排除自带tomcat容器使用宝蓝德?

前言&#xff1a; 由于Spring Boot 1.x和2.x不兼容&#xff0c;BES提供了对应的Spring Boot Starter版本。 bes‑lite‑spring‑boot‑1.x‑starter.jar&#xff0c;适用于Spring Boot 1.x的版本。 bes‑lite‑spring‑boot‑2.x‑starter…

如何使用thinkPHP开发

要使用ThinkPHP进行开发&#xff0c;可以按照以下步骤进行操作&#xff1a; 1. 下载ThinkPHP框架&#xff1a;可以从官方网站&#xff08;https://www.thinkphp.cn/&#xff09;下载最新的ThinkPHP框架。 2. 配置环境&#xff1a;将ThinkPHP框架解压到服务器的网站根目录中&a…