网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 人工智能 > 大模型 >

从脚本到系统:用Python四步构建你的“联系人查

时间:2026-03-22 14:44

人气:

作者:admin

标签:

导读:文章浏览阅读574次,点赞23次,收藏4次。相比于直接访问contact_db[query],get方法在键不存在时不会报错,而是返回None,这是一种更优雅的Python写法(Pythonic)。在V1.0中,我们使用了cont...

在编程的学习路径中,最有趣的时刻往往不是背诵语法,而是看着一行行代码逐渐演变成一个真正可用的“工具”。今天,我们将通过四个版本的迭代,从零开始构建一个“联系人电话查询系统”。

这不仅仅是一个简单的练习,我们将亲身体验软件开发的完整生命周期:

- V1.0 原型版:利用字典与循环,实现最基础的查询。

- V2.0 功能版:引入增删改查(CRUD),让数据“活”起来。

- V3.0 重构版:使用函数封装,从“脚本”走向“工程化”。

- V4.0 健壮版:添加异常处理,打造坚不可摧的系统。

准备好了吗?让我们开始这场代码进化之旅!

V1.0 原型版:初识字典与遍历

万事开头难,但Python的字典(Dictionary)让数据存储变得异常简单。字典是键值对(Key-Value)的集合,天然适合存储“姓名”到“电话号码”的映射关系。

核心思路:

- 建立一个静态字典存储数据。

- 使用input()获取用户输入。

- 使用for循环遍历字典,比对姓名。

--- V1.0 基础版本 ---

1. 准备数据

contact_db = {

    "张三": "13800138001",

    "李四": "13900139002",

    "王五": "13700137003",

    "赵六": "13600136004"

}

2. 获取输入

query = input("请输入要查询的姓名:")

3. 查找逻辑 (使用For循环)

found = False

for name, phone in contact_db.items():

    if name == query:

        print(f" 找到了!{name}的电话号码是:{phone}")

        found = True

        break # 找到后立即退出循环

4. 处理未找到的情况

if not found:

    print(" 抱歉,通讯录中没有这个人。")

技术点拨:

在V1.0中,我们使用了contact_db.items(),这允许我们在循环中同时拿到“键”(姓名)和“值”(电话)。虽然对于简单的查询,直接使用if query in contact_db更高效,但使用for循环是理解“遍历”这一核心编程概念的最佳起点。

V2.0 功能版:实现增删改查

V1.0只能查,数据还是写死的。一个真正的系统应该允许用户管理数据。我们需要实现增(Add)、删(Delete)、改(Update)、查(Search)以及退出(Exit)功能。

优化点:

- 引入while True构建主循环,让程序持续运行。

- 使用if-elif-else构建菜单系统。

--- V2.0 功能增强版 ---

contact_db = {

    "张三": "13800138001",

    "李四": "13900139002",

    "王五": "13700137003",

    "赵六": "13600136004"

}

print("=== 联系人管理系统 V2.0 ===")

while True:

    print("n1. 查询电话 2. 添加联系人 3. 修改电话 4. 删除联系人 5. 退出")

    choice = input("请选择功能 (1-5): ")

    if choice == '1': # 查询

        query = input("请输入姓名:")

        if query in contact_db:

            print(f" {query}的电话是:{contact_db[query]}")

        else:

            print(" 未找到该联系人。")

    elif choice == '2': # 添加

        name = input("请输入新姓名:")

        phone = input("请输入电话:")

        if name in contact_db:

            print("️ 联系人已存在,请使用修改功能。")

        else:

            contact_db[name] = phone

            print(" 添加成功!")

    elif choice == '3': # 修改

        name = input("请输入要修改的姓名:")

        if name in contact_db:

            new_phone = input("请输入新的电话:")

            contact_db[name] = new_phone

            print(" 修改成功!")

        else:

            print(" 联系人不存在。")

 

    elif choice == '4': # 删除

        name = input("请输入要删除的姓名:")

        if name in contact_db:

            del contact_db[name] # 使用del关键字删除键

            print(" 删除成功!")

        else:

            print(" 联系人不存在。")

    elif choice == '5': # 退出

        print(" 再见!")

        break

    else:

        print("️ 输入无效,请重新输入。")

技术点拨:

这一版本的核心在于状态管理。while True保证了程序不会执行一次就结束,而字典的增删改操作(contact_db[key] = value和del)展示了Python数据结构的灵活性。

V3.0 重构版:函数定义的魔力

V2.0的代码虽然功能齐全,但所有逻辑都堆在主循环里,显得非常臃肿(俗称“面条代码”)。如果我们要增加功能,代码将难以维护。这时候,我们需要函数。

优化点:

- 将查询、添加、删除等逻辑封装成独立的函数。

- 主程序只负责显示菜单和调用函数,逻辑清晰。

--- V3.0 函数封装版 ---

contact_db = {

    "张三": "13800138001",

    "李四": "13900139002",

    "王五": "13700137003",

    "赵六": "13600136004"

}

定义功能函数

def search_contact():

    query = input("请输入姓名:")

    # 使用get方法,如果键不存在返回None,避免报错

    phone = contact_db.get(query)

    if phone:

        print(f" {query}的电话是:{phone}")

    else:

        print(" 未找到该联系人。")

def add_contact():

    name = input("请输入新姓名:")

    phone = input("请输入电话:")

    contact_db[name] = phone

    print(" 添加成功!")

def delete_contact():

    name = input("请输入要删除的姓名:")

    if name in contact_db:

        del contact_db[name]

        print(" 删除成功!")

    else:

        print(" 联系人不存在。")

def main():

    print("=== 联系人管理系统 V3.0 ===")

    while True:

        print("n1. 查询 2. 添加 3. 删除 4. 退出")

        choice = input("请选择: ")

        if choice == '1':

            search_contact()

        elif choice == '2':

            add_contact()

        elif choice == '3':

            delete_contact()

        elif choice == '4':

            print(" 再见!")

            break

        else:

            print("️ 输入无效。")

运行主程序

if name == "main":

    main()

技术点拨:

这里我们引入了def关键字来定义函数。注意在search_contact中,我使用了contact_db.get(query)。相比于直接访问contact_db[query],get方法在键不存在时不会报错,而是返回None,这是一种更优雅的Python写法(Pythonic)。

V4.0 健壮版:异常处理与输入验证

现在的系统看起来很美,但如果你在选择菜单时输入了字母“a”,或者在需要输入数字的地方输入了文字,程序可能会抛出ValueError并直接崩溃。为了让系统达到“专业级”,我们需要异常处理。

优化点:

- 使用try-except捕获潜在错误。

- 增加输入验证,防止程序因非法输入而闪退。

--- V4.0 健壮性增强版 ---

contact_db = {

    "张三": "13800138001",

    "李四": "13900139002",

    "王五": "13700137003",

    "赵六": "13600136004"

}

def search_contact():

    query = input("请输入姓名:")

    phone = contact_db.get(query)

    if phone:

        print(f" {query}的电话是:{phone}")

    else:

        print(" 未找到该联系人。")

def add_contact():

    try:

        name = input("请输入新姓名:")

        if not name: raise ValueError("姓名不能为空")

        phone = input("请输入电话:")

        if not phone: raise ValueError("电话不能为空")

     

        contact_db[name] = phone

        print(" 添加成功!")

    except ValueError as e:

        print(f"️ 输入错误:{e}")

def main():

    print("=== 联系人管理系统 V4.0 (Pro) ===")

    while True:

        try:

            print("n1. 查询 2. 添加 3. 删除 4. 退出")

            choice = input("请选择功能编号: ")

            # 简单的输入验证

            if choice not in ['1', '2', '3'

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信