您的位置:首页 > 科技 > IT业 > Python世界:简易地址簿增删查改算法实践

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

2024/11/16 8:54:00 来源:https://blog.csdn.net/qq_17256689/article/details/142264232  浏览:    关键词: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)breakelse:print("Invalid command.")if __name__ == "__main__":main()

本文小结

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

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com