python实现输入Y/N执行或退出程序

本文深入探讨了一个使用Python实现的无限循环控制流程案例,通过条件判断实现程序的正常退出或继续执行,是理解循环和用户输入处理的重要示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

while(True):
    print("请仔细核对以下内容,确认你所操作的对象是本次打印的内容。按Y/N")
    in_content = input("请输入:")
    if in_content == "Y":
        print("执行成功!")
        exit(0)
    elif in_content == "N":
        print("你已退出了该程序!")
        exit(0)
    else:
        print("你输入的内容有误,请重输入!")

 

 

<think>好的,用户想了解如何用Python实现一个输入序号查询图纸的小程序。首先,我需要明确用户的需求。他们可能是一个工程师者项目管理人员,需要快速查找图纸,提高工作效率。用户可能对Python有一定的基础,但可能不熟悉如何将程序与图纸管理结合起来。 接下来,我需要考虑程序的基本功能。用户提到的是通过序号查询图纸,所以核心功能应该是输入一个编号,程序能返回对应的图纸路径相关信息。可能需要一个存储图纸信息的数据库,比如使用字典、CSV文件SQLite数据库。对于简单的情况,可能先用字典CSV作为示例,之后再扩展到更复杂的数据库。 然后,程序的结构应该包括数据加载、用户输入、查询逻辑和结果展示。数据存储方面,可能需要考虑如何组织图纸信息,比如序号、名称、路径、版本等字段。用户可能还需要添加、删除修改图纸信息的功能,但当前需求主要是查询,所以先聚焦在查询部分。 接着是代码实现。首先,用Python读取存储图纸信息的数据结构,比如从CSV文件加载数据到字典中。然后,接收用户输入的序号,进行查询,并返回结果。需要处理用户输入的错误情况,比如输入非数字字符,者序号不存在的情况,给出友好的提示。 可能还需要考虑如何打开图纸文件,比如使用os模块的startfile函数来直接打开对应的PDFDWG文件。不过这可能涉及到路径的问题,需要确保存储的路径是正确的,并且程序有权限访问。 然后,测试各个功能模块是否正常。比如,数据加载是否正确,查询是否准确,错误处理是否有效。用户可能需要一个循环,让程序持续接受查询,直到用户选择退出。 最后,考虑扩展性。比如,是否需要图形界面,者部署到网络上。但根据用户当前的需求,可能先实现命令行版本,满足基本功能。用户如果有进一步的需求,可以逐步添加功能。 总结一下,步骤大致是:设计数据结构,实现数据加载,处理用户输入执行查询,展示结果,错误处理,然后测试优化。需要确保代码结构清晰,易于维护和扩展。同时,文档和注释也很重要,方便用户理解和使用。</think>我将分步骤为您讲解如何用Python实现图纸查询小程序,并提供可运行的示例代码: 一、核心功能设计 1. 图纸数据存储(使用CSV文件) 2. 序号查询功能 3. 模糊搜索功能 4. 结果展示与文件打开 二、实现步骤(含完整代码) 1. 创建图纸数据库文件(建议使用CSV格式) ```python import csv # 初始化示例数据 data = [ ["DWG-2023-001", "车间平面图", "2023-01-15", "/drawings/车间平面图.dwg"], ["DWG-2023-002", "配电系统图", "2023-02-20", "/drawings/配电系统图.pdf"], ["DWG-2023-003", "给排水详图", "2023-03-10", "/drawings/给排水详图.dwg"] ] # 写入CSV文件 with open('drawings_db.csv', 'w', newline='', encoding='utf-8') as f: writer = csv.writer(f) writer.writerow(["图纸编号", "图纸名称", "发布日期", "文件路径"]) # 表头 writer.writerows(data) ``` 2. 实现查询程序 ```python import csv import os import platform class DrawingSearch: def __init__(self): self.db_file = 'drawings_db.csv' self.load_data() def load_data(self): """加载图纸数据库""" try: with open(self.db_file, 'r', encoding='utf-8') as f: reader = csv.DictReader(f) self.drawings = list(reader) print("数据库加载成功,当前记录数:", len(self.drawings)) except FileNotFoundError: print("错误:数据库文件不存在!") exit() def search_by_number(self, number): """精确编号查询""" for item in self.drawings: if item['图纸编号'] == number.upper(): return item return None def fuzzy_search(self, keyword): """模糊搜索""" results = [] for item in self.drawings: if keyword.lower() in item['图纸名称'].lower(): results.append(item) return results def open_file(self, path): """打开文件(跨平台支持)""" system = platform.system() try: if system == "Windows": os.startfile(path) elif system == "Darwin": os.system(f"open '{path}'") else: os.system(f"xdg-open '{path}'") except Exception as e: print("文件打开失败:", str(e)) def run(self): while True: print("\n=== 图纸查询系统 ===") print("1. 精确编号查询") print("2. 模糊名称搜索") print("3. 退出系统") choice = input("请输入选项:") if choice == '1': number = input("请输入图纸编号:").strip() result = self.search_by_number(number) if result: print(f"\n查询结果:\n编号:{result['图纸编号']}\n名称:{result['图纸名称']}\n日期:{result['发布日期']}") if input("是否打开文件?(y/n)").lower() == 'y': self.open_file(result['文件路径']) else: print("未找到匹配的图纸记录") elif choice == '2': keyword = input("请输入搜索关键词:").strip() results = self.fuzzy_search(keyword) if results: print(f"\n找到 {len(results)} 条结果:") for idx, item in enumerate(results, 1): print(f"{idx}. {item['图纸编号']} - {item['图纸名称']}") else: print("未找到相关图纸") elif choice == '3': print("感谢使用,再见!") break else: print("无效的输入,请重新选择") if __name__ == "__main__": app = DrawingSearch() app.run() ``` 三、程序特点说明 1. 数据持久化:使用CSV文件存储数据,便于维护和修改 2. 跨平台支持:自动识别操作系统并调用正确方式打开文件 3. 双重搜索模式: - 精确编号查询:直接定位唯一图纸 - 模糊名称搜索:支持部分匹配查询 4. 文件直接打开功能:支持DWG/PDF等常见图纸格式 四、扩展建议 1. 数据加密:敏感数据可增加加密模块 2. 版本控制:添加图纸版本管理功能 3. 权限管理:增加用户登录和权限验证 4. 数据库升级:可迁移到SQLite/MySQL等专业数据库 五、使用示例 ``` === 图纸查询系统 === 1. 精确编号查询 2. 模糊名称搜索 3. 退出系统 请输入选项:1 请输入图纸编号:dwg-2023-002 查询结果: 编号:DWG-2023-002 名称:配电系统图 日期:2023-02-20 是否打开文件?(y/n)y (自动打开对应文件) ``` 这个程序可以作为基础版本,您可以根据实际需求添加更多功能模块。建议先从CSV版本开始测试,待稳定后可升级到数据库版本。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值