Python世界:简易地址簿增删查改算法实践

Python世界:简易地址簿增删查改算法实践

任务背景

该任务来自简明Python教程中迈出下一步一章的问题:

编写一款你自己的命令行地址簿程序, 你可以用它浏览、 添加、 编辑、 删除或搜索你的联系人, 例如你的朋友、 家人、 同事, 还有他们诸如邮件地址、 电话号码等多种信息。这些详细信息必须被妥善储存以备稍后的检索。

编码思路

从问题中可以提炼以下信息:1、地址簿需要支持本地存储读写;2、需通过命令行支持增删查改。

具体功能:

  • 地址簿初始化
  • 地址簿信息读取(全文显示)
  • 地址簿信息查找(定向搜索)
  • 地址簿信息删除(指定删除)
  • 地址簿信息增加(指定增加)
  • 地址簿信息修改(指定替换)

实现思路:

  • 初始化,里面添加有默认的3个联系人信息
  • 支持读取,–read指令显示地址簿全文
  • 支持查找,–find指令搜索指定字符串,输入需为人名
  • 支持删除,–delete指令删除指定人名信息
  • 支持增加,–add指令增加指定人名信息
  • 支持修改,–modify指令替换现有人名相关信息

代码实现

原本想,简单设计几组数据:从地址簿基础中获取。但这时懒人病突然犯了,于是就把上面的任务背景和编码思路一股脑儿丢给AI大模型吧。

不得不说,Copilot还是蒸汽,5s丝滑给出答案。个人测试下来,一句不改,完美实现了预期的Demo功能。

代码如下:

# -*- coding: utf-8 -*-
'''
功能:命令行增删查改地址簿
'''

import json

# 初始化地址簿,添加默认联系人
address_book_init = {
    "Alice": {"email": "alice@example.com", "phone": "123-456-7890"},
    "Bob": {"email": "bob@example.com", "phone": "234-567-8901"},
    "Charlie": {"email": "charlie@example.com", "phone": "345-678-9012"}
}

# 保存地址簿到文件
def save_address_book(address_book):
    with open('address_book.json', 'w') as file:
        json.dump(address_book, file)

# 从文件读取地址簿
def load_address_book():
    try:
        with open('address_book.json', 'r') as file:
            return json.load(file)
    except FileNotFoundError:
        return address_book_init

# 显示地址簿全文
def read_address_book(address_book):
    for name, info in address_book.items():
        print(f"Name: {name}, Email: {info['email']}, Phone: {info['phone']}")

# 查找联系人
def find_contact(address_book, name):
    if name in address_book:
        info = address_book[name]
        print(f"Name: {name}, Email: {info['email']}, Phone: {info['phone']}")
    else:
        print(f"Contact {name} not found.")

# 删除联系人
def delete_contact(address_book, name):
    if name in address_book:
        del address_book[name]
        save_address_book(address_book)
        print(f"Contact {name} deleted.")
    else:
        print(f"Contact {name} not found.")

# 增加联系人
def add_contact(address_book, name, email, phone):
    address_book[name] = {"email": email, "phone": phone}
    save_address_book(address_book)
    print(f"Contact {name} added.")

# 修改联系人
def modify_contact(address_book, name, email, phone):
    if name in address_book:
        address_book[name] = {"email": email, "phone": phone}
        save_address_book(address_book)
        print(f"Contact {name} modified.")
    else:
        print(f"Contact {name} not found.")

# 主函数
def main():
    address_book = load_address_book()
    while True:
        command = input("Enter command (--read, --find, --delete, --add, --modify, --exit): ")
        if command == "--read":
            read_address_book(address_book)
        elif command == "--find":
            name = input("Enter name to find: ")
            find_contact(address_book, name)
        elif command == "--delete":
            name = input("Enter name to delete: ")
            delete_contact(address_book, name)
        elif command == "--add":
            name = input("Enter name to add: ")
            email = input("Enter email: ")
            phone = input("Enter phone: ")
            add_contact(address_book, name, email, phone)
        elif command == "--modify":
            name = input("Enter name to modify: ")
            email = input("Enter new email: ")
            phone = input("Enter new phone: ")
            modify_contact(address_book, name, email, phone)
        elif command == "--exit":
            save_address_book(address_book)
            break
        else:
            print("Invalid command.")

if __name__ == "__main__":
    main()

本文小结

这题没啥好总结的了,程序员要多练习逻辑和需求分析思维,然后结构化喂给AI,秒出答案。

所以,广大码农兄弟在开发中,务必注意这种类型的活儿,能让机器干就让机器干去,赶紧解放自己,聚焦到更有挑战的任务上去。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值