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

简介: python 基础综合应用——小开发

综合复习

  • 变量
  • 循环
  • 函数
  • 模块

开发 名片管理系统

名片管理系统介绍

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

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

1.新建名片

2.显示全部名片

3.查询名片

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


1. 新建名片

2. 显示全部

3. 查询名片

0. 退出系统



名片管理系统的开发

1.框架的搭建

2.新建名片

3.显示所有名片

4.查询名片

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

6.让python程序直接运行


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("输入错误,请重新输入")

在这里需要注意的是



使用 in 针对 列表 判断,避免使用 or 拼接复杂的逻辑条件


没有使用 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.新建名片


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

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

定义名片列表变量

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


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"]))


注意的是



print("\tPython")#\t表示空四个字符,也称缩进,相当于按一下Tab键

print("\nPython\nJAVA\nC++\nJavaScript\nC#")#\n表示换行,相当于按一下回车

print("languages:\n\tPython\n\tJAVA\n\tC++\n\tJavaScript\n\tC#")#\n\t表示换行加每行空四格

若没有名片字典保存在列表里面,那么就有如下代码,这个代码放在上面代码的上方

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


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

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

4.查询名片


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

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("删除名片成功!")






相关文章
|
1月前
|
机器学习/深度学习 存储 数据挖掘
Python图像处理实用指南:PIL库的多样化应用
本文介绍Python中PIL库在图像处理中的多样化应用,涵盖裁剪、调整大小、旋转、模糊、锐化、亮度和对比度调整、翻转、压缩及添加滤镜等操作。通过具体代码示例,展示如何轻松实现这些功能,帮助读者掌握高效图像处理技术,适用于图片美化、数据分析及机器学习等领域。
73 20
|
1月前
|
人工智能 Python
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
56 7
|
2月前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
3月前
|
机器学习/深度学习 Python
堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能
本文深入探讨了堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能。文章详细介绍了堆叠的实现步骤,包括数据准备、基础模型训练、新训练集构建及元学习器训练,并讨论了其优缺点。
165 3
|
4天前
|
JavaScript 搜索推荐 Android开发
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
23 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
|
1天前
|
算法 Serverless 数据处理
从集思录可转债数据探秘:Python与C++实现的移动平均算法应用
本文探讨了如何利用移动平均算法分析集思录提供的可转债数据,帮助投资者把握价格趋势。通过Python和C++两种编程语言实现简单移动平均(SMA),展示了数据处理的具体方法。Python代码借助`pandas`库轻松计算5日SMA,而C++代码则通过高效的数据处理展示了SMA的计算过程。集思录平台提供了详尽且及时的可转债数据,助力投资者结合算法与社区讨论,做出更明智的投资决策。掌握这些工具和技术,有助于在复杂多变的金融市场中挖掘更多价值。
22 12
|
4天前
|
人工智能 测试技术 数据处理
通义灵码 2.0 体验报告:Deepseek 加持下的 Python 开发之旅
通义灵码 2.0 体验报告:Deepseek 加持下的 Python 开发之旅
57 11
|
1月前
|
前端开发 搜索推荐 编译器
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
111 34
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
|
8天前
|
API Python
python泛微e9接口开发
通过POST请求向指定IP的API注册设备以获取`secrit`和`spk`。请求需包含`appid`、`loginid`、`pwd`等头信息。响应中包含状态码、消息及`secrit`(注意拼写)、`secret`和`spk`字段。示例代码使用`curl`命令发送请求,成功后返回相关信息。
30 5
|
22天前
|
人工智能 开发者 Python
Chainlit:一个开源的异步Python框架,快速构建生产级对话式 AI 应用
Chainlit 是一个开源的异步 Python 框架,帮助开发者在几分钟内构建可扩展的对话式 AI 或代理应用,支持多种工具和服务集成。
137 9

热门文章

最新文章

推荐镜像

更多