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

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"]:passelif action == "0":print("欢迎再次使用【名片管理系统】")
​breakelse: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("欢迎再次使用【名片管理系统】")
​breakelse:print("输入错误,请重新输入:")
​

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

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

2.新建名片

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

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

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

  • # 所有名片记录的列表
    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"]))

注意的是

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(小明) 针对找到的字典进行后续操作:修改/删除
​breakelse: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_toolswhile 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("欢迎再次使用【名片管理系统】")breakelse: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)breakelse: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("删除名片成功!")

相关文章:

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

#python 基础综合应用——小开发 综合复习 变量- 循环- 函数- 模块 开发 名片管理系统 名片管理系统介绍 名片管理系统可以理解成花名册软件,通过个人新建人的信息后可以进行查询等简单操作的程序 名片管理系统有三个作用, 1.新建名片 2.显示全部名…...

算法金 | 我最常用的两个数据可视化软件,强烈推荐

大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 抱个拳,送个礼 预警:今天文章的描述可能会让你有点别扭;如感到不适,请及时停止 在我行…...

【机器学习实战】Baseline精读笔记

比赛用到的库 numpy:提供(多维)数组操作 pandas:提供数据结构、数据分析 catboost:用于机器学习的库,特别是分类和回归任务 sklearn.model_selection:包含模型选择的多种方法,如交…...

Redis 缓存问题及解决

所有问题解决的关键就是尽少的访问数据库,或者避免太集中的访问。 一,缓存穿透(key在数据库不存在) 当数据既不在缓存中,也不在数据库中,导致请求访问缓存没数据,访问数据库也没数据&#xff0c…...

RISC-V的历史与设计理念

指令集是什么? 如果把软件比作螺丝钉,硬件比作螺母,那么指令集架构就是螺丝钉与螺母的蓝图。我们需要根据蓝图设计可以匹配的螺丝钉与螺母。——包云岗老师 RISC-V的起源 以往比较流行的指令集:ARM,MIPS,X…...

山西车间应用LP-LP-SCADA系统的好处有哪些

关键字:LP-SCADA系统, 传感器可视化, 设备可视化, 独立SPC系统, 智能仪表系统,SPC可视化,独立SPC系统 LP-SCADA(监控控制与数据采集)系统是工业控制系统的一种,主要用于实时监控、控制和管理工业生产过程。 在车间应用LP-SCADA系统&#xf…...

setjmp和longjmp函数使用

这里用最简单直接的描述&#xff1a;这两组函数是用于实现类似vscode全局的标签跳转功能&#xff0c;setjmp负责埋下标签&#xff0c;longjmp负责标签跳转。 #include <stdio.h> #include <stdlib.h> #include <setjmp.h>jmp_buf envbuf1; jmp_buf envbuf2;…...

vue-org-tree搜索到对应项高亮展开

效果图&#xff1a; 代码&#xff1a; <template><div class"AllTree"><el-form :inline"true" :model"formInline" class"demo-form-inline"><el-form-item><el-input v-model"formInline.user&quo…...

FullCalendar日历组件集成实战(17)

背景 有一些应用系统或应用功能&#xff0c;如日程管理、任务管理需要使用到日历组件。虽然Element Plus也提供了日历组件&#xff0c;但功能比较简单&#xff0c;用来做数据展现勉强可用。但如果需要进行复杂的数据展示&#xff0c;以及互动操作如通过点击添加事件&#xff0…...

【图像分割】mask2former:通用的图像分割模型详解

最近看到几个项目都用mask2former做图像分割&#xff0c;虽然是1年前的论文&#xff0c;但是其attention的设计还是很有借鉴意义&#xff0c;同时&#xff0c;mask2former参考了detr的query设计&#xff0c;实现了语义和实例分割任务的统一。 1.背景 1.1 detr简介 detr算是第…...

【不锈钢酸退作业区退火炉用高温辐射计快速安装】

项目名称 不锈钢酸退作业区退火炉用高温辐射计快速安装 改造实施项目简介项目提出前状况:不锈钢生产过程中,各种型号的不锈钢带钢在退火工艺中对带钢温度的准确性要求很高,带钢温度的检测直接影响带钢的产品质量,不锈钢带钢温度测量依靠的是高温辐射计,其测量的准确性、稳…...

Studying-代码随想录训练营day29| 134. 加油站、135. 分发糖果、860.柠檬水找零、406.根据身高重建队列

第29天&#xff0c;贪心part03&#xff0c;快过半了(ง •_•)ง&#x1f4aa;&#xff0c;编程语言&#xff1a;C 目录 134.加油站 135. 分发糖果 860.柠檬水找零 406.根据身高重建队列 134.加油站 文档讲解&#xff1a;代码随想录加油站 视频讲解&#xff1a;手撕加油站…...

Understanding Zero Knowledge Proofs (ZKP)

Bilingual Tutorial: Understanding Zero Knowledge Proofs (ZKP) 双语教程&#xff1a;理解零知识证明&#xff08;ZKP&#xff09; Introduction 介绍 English: Zero Knowledge Proofs (ZKP) are a fascinating concept in cryptography where one party (the prover) can…...

微信小程序 DOM 问题

DOM 渲染问题 问题 Dom limit exceeded, please check if theres any mistake youve made.测试页面 1 <template><scroll-view scroll"screen" style"width: 100%;height: 100vh;" :scroll-y"true" :scroll-with-animation"tru…...

可视化作品集(03):旅游景区的应用,美爆啦。

景区可视化通常指的是利用现代科技手段&#xff0c;如地图、虚拟现实&#xff08;VR&#xff09;、增强现实&#xff08;AR&#xff09;、无人机航拍等技术&#xff0c;将景区的地理信息、景点分布、交通路线、游客服务设施等内容以可视化的方式呈现给游客或者管理者&#xff0…...

嵌入式实时操作系统:Intewell操作系统与VxWorks操作系统有啥区别

Intewell操作系统和VxWorks操作系统都是工业领域常用的操作系统&#xff0c;它们各有特点和优势。以下是它们之间的一些主要区别&#xff1a; 架构差异&#xff1a; Intewell操作系统采用微内核架构&#xff0c;这使得它具有高实时性、高安全性和强扩展性的特点。微内核架构…...

PCDN技术如何提高内容分发效率?(壹)

PCDN技术提高内容分发效率的操作主要体现在以下几个方面&#xff1a; 利用P2P技术&#xff1a;PCDN以P2P技术为基础&#xff0c;通过挖掘利用边缘网络的海量碎片化闲置资源&#xff0c;实现内容的分发。这种方式可以有效减轻中心服务器的压力&#xff0c;降低内容传输的延迟&a…...

Java 中Json中既有对象又有数组的参数 如何转化成对象

1.示例一&#xff1a;解析一个既包含对象又包含数组的JSON字符串&#xff0c;并将其转换为Java对象 在Java中处理JSON数据&#xff0c;尤其是当JSON结构中既包含对象又包含数组时&#xff0c;常用的库有org.json、Gson和Jackson。这里我将以Gson为例来展示如何解析一个既包含对…...

什么是数据挖掘(python)

文章目录 1.什么是数据挖掘2.为什么要做数据挖掘&#xff1f;3数据挖掘有什么用处&#xff1f;3.1分类问题3.2聚类问题3.3回归问题3.4关联问题 4.数据挖掘怎么做?4.1业务理解&#xff08;Business Understanding&#xff09;4.2数据理解&#xff08;Data Understanding&#x…...

【Tomcat】Linux下安装帆软(fineReport)服务器 Tomcat

需求&#xff1a;帆软&#xff08;fineReport&#xff09;数据集上传至服务器 工具&#xff1a;XSHELL XFTP 帮助文档 一. 安装帆软服务器Tomcat 提供 Linux X86 和 Linux ARM 两种类型的部署包 &#xff0c;所以在下载部署钱需要确认系统架构不支持在 32 位操作系统上安装 查…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...