最近立志成功一名python程序猿
开始学习python
很久之前就知道python能用来做很多好玩的小东西了
比如能给自己的女神定时发天气预报邮件…
(以后应该会尝试去做)
做个智能回复陪女神聊天???
(人工zz陪女神聊天?怪不得你单身)
这就令我更想学习python了
刚入门不久!于是做了个简单的名片管理系统
写下自己第一个python的学习笔记
1.运行环境:
操作系统:windows 10
python版本:3.7
编辑器:pycharm
2.编写思路:
(1) 先确定好程序所需的功能,制定好功能菜单。 功能主要有增删查改,还有一个显示已存的名片信息。然后我把删除和修改都放在了搜索的功能里,这样做起来更快更方便。
这就是我的主菜单 输入对应的数字选择功能
(2) 接着就是给 1 2 3 功能定义函数了。为了让代码看起来更简洁,我分了两个.py文件。一个是main.py 一个是用来写功能的函数的。根据选择的数字 1 2 3 来跳转你编写的函数。main文件作为程序的入口,每次运行它就ok。
import cards_tools
while True:
cards_tools.show_menu()
action_str = input("请输入您的选择:")
print("您选择的功能是【%s】" % action_str)
if action_str in ["1", "2", "3"]:
# 增加名片
if action_str == "1":
cards_tools.add_card()
# 显示全部
elif action_str == "2":
cards_tools.show_all()
# 查询名片
elif action_str == "3":
cards_tools.search_card()
elif action_str == "0":
print("退出")
break
# pass # 表示一个占位符 还没开发的部分先跳过
# 保证程序的正常运行
else:
print("输入错误,没有这个选项")
这是main.py的代码 简单明了
(3) 然后就做第一个功能:新增名片。先想好要将新的名片用什么数据结构来存储,我想的是将每个名片信息作为一个字典,然后将这些字典都保存到同一个列表中。这样,我们这个新增名片的功能很快就完成了。需要注意的是,定义列表的时候要定义为全局变量,因为列表在每一个函数中都是同一列表,都会用到。
(4) 然后就下一个功能,是显示所有的名片信息。这个功能也十分简单,我们只有制定一个表头,接着遍历一个list列表,将里面的数据print出来就好了。这里我做了一个if判断,如果列表长度为0,就输出没有名片记录的提示。
(5) 在搜索功能中我加入了删除和修改,在找到了名片记录的前提下,再选择是删除还是修改此名片记录。搜索功能就是遍历一遍名片列表,用if语句来判断是否跟输入的字符串一样,若是一样就打印出来,也打印一个菜单,让用户选择是 1.删除 2.修改 0.返回主菜单。这里我在搜索函数中设置了一个实参,匹配到的字典等等可以用来传递到删除或者修改的函数里。
(6) 删除功能十分简单,直接从列表里remove就好了。
(7) 修改名片的思想是,每个名片记录有不同的数据,如果用户不想修改的话就按回车,不用输入数据,要是修改的话就直接输入修改的内容。其实就是不想修改的数据我们返回原来字典里的值,要修改的就获取输入的值返回到字典里。那么怎么知道用户有没有输入数据呢?很简单,只要判断用户输入的字符串长度就好了,若是0则没有输入。
叮!这样我们整个简单的名片管理系统就完成啦!
我是看了教学视频然后自己总结出来的
这次主要掌握了python的语法和列表还有字典的操作
以后要不断的练习!
通过编程来提高自己的level~
其实只要用心做一件事 我们肯定都能做好的
do him!
贴上代码~(main的代码在上面已经有了)
# 存储名片信息的列表
card_list = []
def show_menu():
"""显示菜单"""
print("*" * 50)
print("1.新增名片")
print("2.显示全部名片")
print("3.搜索名片")
print("") # 换行 相当于回车
print("0.退出系统")
print("*" * 50)
def add_card():
"""新增名片"""
print("-" * 50)
print("新增名片功能")
name_str = input("请输入姓名:")
phone_str = input("请输入电话:")
qq_str = input("请输入QQ:")
email_str = input("请输入邮箱:")
card_dict = {
"姓名": name_str,
"电话": phone_str,
"QQ": qq_str,
"邮箱": email_str,
}
card_list.append(card_dict)
print("添加 %s 的名片成功" % name_str)
# print(card_list)
def show_all():
"""显示全部名片"""
print("-" * 50)
print("显示所有名片信息")
# 判断是否存在名片记录
if len(card_list) == 0:
print("没有名片记录")
# 下方代码不执行
# return后无内容 表示返回到调用函数的位置
return
# 打印表头
for name in ["姓名", "电话", "QQ", "邮箱"]:
# /t 制表符 用来作垂直对齐
print(name, end="\t\t")
print("") # 换行
for card_dict in card_list:
# 要跟上面创建字典时候的键值一致 否则出现keyError
print("%s\t\t%s\t\t%s\t\t%s" % (card_dict["姓名"],
card_dict["电话"],
card_dict["QQ"],
card_dict["邮箱"]))
def search_card():
"""搜索名片"""
print("-" * 50)
print("搜索名片")
find_name = input("请输入要搜索的姓名:")
for card_dict in card_list:
if card_dict["姓名"] == find_name:
print("找到啦")
print("姓名\t\t电话\t\tQQ\t\t邮箱")
print("-" * 50)
print("%s\t\t%s\t\t%s\t\t%s" % (card_dict["姓名"],
card_dict["电话"],
card_dict["QQ"],
card_dict["邮箱"]))
print("")
deal_card(card_dict)
break
else:
print("抱歉,没有找到 %s 记录" % find_name)
def deal_card(find_dict):
# print(find_dict)
action_str = input("请选择你想执行的功能:【1】删除此名片 【2】修改此名片信息 【0】返回菜单")
print("")
if action_str == "1":
# 从列表中移除此条记录
card_list.remove(find_dict)
elif action_str == "2":
find_dict["姓名"] = card_input("请输入姓名(回车不修改):", find_dict["姓名"])
find_dict["电话"] = card_input("请输入电话(回车不修改):", find_dict["电话"])
find_dict["QQ"] = card_input("请输入QQ(回车不修改):", find_dict["QQ"])
find_dict["邮箱"] = card_input("请输入邮箱(回车不修改):", find_dict["邮箱"])
def card_input(tip, dict_value):
result = input(tip)
# 如果有输入就修改 没有输入信息就返回原来字典的值
if len(result) > 0:
return result
else:
return dict_value