该任务来自简明Python教程中迈出下一步一章的问题:
编写一款你自己的命令行地址簿程序, 你可以用它浏览、 添加、 编辑、 删除或搜索你的联系人, 例如你的朋友、 家人、 同事, 还有他们诸如邮件地址、 电话号码等多种信息。这些详细信息必须被妥善储存以备稍后的检索。
从问题中可以提炼以下信息:1、地址簿需要支持本地存储读写;2、需通过命令行支持增删查改。
具体功能:
实现思路:
原本想,简单设计几组数据:从地址簿基础中获取。但这时懒人病突然犯了,于是就把上面的任务背景和编码思路一股脑儿丢给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,秒出答案。
所以,广大码农兄弟在开发中,务必注意这种类型的活儿,能让机器干就让机器干去,赶紧解放自己,聚焦到更有挑战的任务上去。