名字管理系统
1.一个程序如果要实现多个功能,每完成一个功能的代码紧接着就是测试。然后可以继续添加额外的功能,切勿全部功能全部完成再去测试。
2.当一串代码需要重复执行,但又不知道重复多少次,可以用while True:
遍历字符串、列表、元组获取每个字符或者元素必须for 循环
#1. 打印功能提示
print("="*50)
print("名字关系系统 V8.6")
print(" 1:添加一个新的名字")
print(" 2:删除一个名字")
print(" 3:修改一个名字")
print(" 4:查询一个名字")
print(" 5:退出系统")
print("="*50)
names = []#定义一个空的列表用来存储添加的名字,必须定义在循环外部
while True:
#2. 获取用的选择
num = int(input("请输入功能序号:"))
#3. 根据用户的选择,执行相应的功能
if num==1:
new_name = input("请输入名字:")
names.append(new_name)
print(names)
elif num==2:
pass
elif num==3:
pass
elif num==4:
find_name = input("请输入要查询的名字:")
if find_name in names:
print("找到了你要找的人")
else:
print("查无此人")
elif num==5:
break
else:
print("您的输入有误,请重新输入")
名片管理系统
#1. 打印功能提示
print("="*50)
print(" 名片管理系统 V0.01")
print(" 1. 添加一个新的名片")
print(" 2. 删除一个名片")
print(" 3. 修改一个名片")
print(" 4. 查询一个名片")
print(" 5. 显示所有的名片")
print(" 6. 退出系统")
print("="*50)
#把字典作为列表的元素
card_infors = []
while True:
#2. 获取用户的输入
num = int(input("请输入操作序号:"))
#3. 根据用户的数据执行相应的功能
if num==1:
new_name = input("请输入新的名字:")
new_qq = input("请输入新的QQ:")
new_weixin = input("请输入新的微信:")
new_addr = input("请输入新的住址:")
#定义一个新的字典,用来存储一个新的名片
new_infor = {}
new_infor['name'] = new_name
new_infor['qq'] = new_qq
new_infor['weixin'] = new_weixin
new_infor['addr'] = new_addr
#将一个字典,添加到列表中
card_infors.append(new_infor)
print(card_infors)
elif num==2:
pass
elif num==3:
pass
elif num==4:
find_name = input("请输入要查询的名字:")
#如果for循环中既输出有又输出无,可以采用for—else结构也可以用标记常量(在for循环的内部和外部各家一个变量并进行判断)解决后则个问题
for temp in card_infors:
if temp['name']==find_name:
print("找到了.....")
break
else:
#只要for循环的过程中没有执行到break,那么就会执行else里面的代码
print("没有找到....")
elif num==5:
print("姓名\tQQ\t微信\t住址")
#用for循环遍历列表输出每一个字典
for temp in card_infors:
print("%s\t%s\t%s\t%s"%(temp['name'], temp['qq'], temp['weixin'], temp['addr']))
elif num==6:
break
else:
print("输入有误,请重新输入")
print("")
名片管理系统函数版
#定义一个列表用来存储名片
card_infors = []
def print_menu():
"""完成打印功能菜单"""
print("="*50)
print(" 名片管理系统 V0.01")
print(" 1. 添加一个新的名片")
print(" 2. 删除一个名片")
print(" 3. 修改一个名片")
print(" 4. 查询一个名片")
print(" 5. 显示所有的名片")
print(" 6. 退出系统")
print("="*50)
def add_new_card_infor():
"""完成添加一个新的名片"""
new_name = input("请输入新的名字:")
new_qq = input("请输入新的QQ:")
new_weixin = input("请输入新的微信:")
new_addr = input("请输入新的住址:")
#定义一个新的字典,用来存储一个新的名片
new_infor = {}
new_infor['name'] = new_name
new_infor['qq'] = new_qq
new_infor['weixin'] = new_weixin
new_infor['addr'] = new_addr
#将一个字典,添加到列表中
global card_infors
card_infors.append(new_infor)
#print(card_infors)# for test
def find_card_infor():
"""用来查询一个名片"""
global card_infors #修改不可变类型的全局变量需要global关键词,由于列表是可变类型的全局变量不需要这个关键词
find_name = input("请输入要查找的姓名:")
find_flag = 0#默认表示没有找到,这是标记变量,可以使用for-else结构
for temp in card_infors:
if find_name == temp["name"]:
print("%s\t%s\t%s\t%s"%(temp['name'], temp['qq'], temp['weixin'], temp['addr']))#\t 用于对齐
find_flag=1#表示找到了
break
#判断是否找到了
if find_flag == 0:
print("查无此人....")
def show_all_infor():
"""显示所有的名片信息"""
global card_infors
print("姓名\tQQ\t微信\t住址")
for temp in card_infors:
print("%s\t%s\t%s\t%s"%(temp['name'], temp['qq'], temp['weixin'], temp['addr']))
def main():
"""完成对整个程序的控制"""
#1. 打印功能提示
print_menu()
while True:
#2. 获取用户的输入
num = int(input("请输入操作序号:"))
#3. 根据用户的数据执行相应的功能
if num==1:
add_new_card_infor()
elif num==2:
pass
elif num==3:
pass
elif num==4:
find_card_infor()
elif num==5:
show_all_infor()
elif num==6:
break
else:
print("输入有误,请重新输入")
print("")
#调用主函数
main()
文件管理系统文件版
程序执行完毕后会释放内存,数据会被清除。需要在程序中添加保存数据的函数把数据保存在文件中。常用的数据格式有hdf5和pkl。
#用来存储名片
card_infors = []
def print_menu():
"""完成打印功能菜单"""
print("="*50)
print(" 名片管理系统 V0.01")
print(" 1. 添加一个新的名片")
print(" 2. 删除一个名片")
print(" 3. 修改一个名片")
print(" 4. 查询一个名片")
print(" 5. 显示所有的名片")
print(" 6. 保存信息")
print(" 7. 退出系统")
print("="*50)
def add_new_card_infor():
"""完成添加一个新的名片"""
new_name = input("请输入新的名字:")
new_qq = input("请输入新的QQ:")
new_weixin = input("请输入新的微信:")
new_addr = input("请输入新的住址:")
#定义一个新的字典,用来存储一个新的名片
new_infor = {}
new_infor['name'] = new_name
new_infor['qq'] = new_qq
new_infor['weixin'] = new_weixin
new_infor['addr'] = new_addr
#将一个字典,添加到列表中
global card_infors
card_infors.append(new_infor)
#print(card_infors)# for test
def find_card_infor():
"""用来查询一个名片"""
global card_infors #由于类属性是可变类型这里可以省略global关键词
find_name = input("请输入要查找的姓名:")
find_flag = 0#默认表示没有找到
for temp in card_infors:
if find_name == temp["name"]:
print("%s\t%s\t%s\t%s"%(temp['name'], temp['qq'], temp['weixin'], temp['addr']))
find_flag=1#表示找到了
break
#判断是否找到了
if find_flag == 0:
print("查无此人....")
def show_all_infor():
"""显示所有的名片信息"""
global card_infors
print("姓名\tQQ\t微信\t住址")
for temp in card_infors:
print("%s\t%s\t%s\t%s"%(temp['name'], temp['qq'], temp['weixin'], temp['addr']))
def save_2_file():
"""把已经添加的信息保存到文件中"""
f = open("backup.data", "w")
f.write(str(card_infors)
f.close()
def load_infor():
global card_infors
#应对文件不存在这个异常
try:
f = open("backup.data")
card_infors = eval(f.read())
f.close()
except Exception:
pass
def main():
"""完成对整个程序的控制"""
#恢复(加载)之前的数据到程序中
load_infor()
#1. 打印功能提示
print_menu()
while True:
#2. 获取用户的输入
num = int(input("请输入操作序号:"))
#3. 根据用户的数据执行相应的功能
if num==1:
add_new_card_infor()
elif num==2:
pass
elif num==3:
pass
elif num==4:
find_card_infor()
elif num==5:
show_all_infor()
elif num==6:
save_2_file()
elif num==7:
break
else:
print("输入有误,请重新输入")
print("") #换行
if __name__ == "__main__":
#调用主函数