day 5 名片管理系统-文件版
1.添加__name__ == '__main__'
if __name__ == "__main__": #添加__name__变量
#调用主函数
main()
2.添加6功能,保存到文件
def save_2_file():
'''完成保存到文件的功能'''
f = open("backup.data",'w')
f.write(str(card_infors)) #文件只能保存str字符串类型,
#TypeError: write() argument must be str, not list
f.close()
3.保存文件的内容
vim backup.data #### 第1种,直接把list转换成str存入 文件
[{'qq': 'dfas', 'addr': 'ds', 'name': 'aa', 'age': 'adf'}, {'qq': 'dfas', 'addr': 'fd', 'name': 'b', 'age': 'dsfa'}] ##### 第2种,好看 不推荐
aa,3434,3434,123
bb,43,43,34
c,2334,43,43 #保存的数据文件,不是为了用户查看的,怎么简单怎么来
4.程序执行开始,读取文件
1)版本1:没有数据
def load_infor():
'''完成对文件内数据的加载''' f = open("backup.data","r")
card_infor = list(f.read()) #字符串str转换成list列表格式
f.close()
def main():
'''完成对整个程序的控制'''
#恢复加载之前的文件内容到程序中
load_infors() # 1.打印功能信息
print_menu()
### 运行结果
##### python3 08-读取文件.py
**************************************************
名片管理系统 V3
1:添加一个名片
2:删除一个名片
3:修改一个名片
4:查询一个名片
5:显示所有
6:保存
7:退出系统
**************************************************
请输入你要的功能:5
姓名 年龄 qq号 地址 请输入你要的功能:^Z
2)版本2:global全局变量,eval()
请输入你要的功能:5
姓名 年龄 qq号 地址
aa sfd dsaf df
bb daf fda dfs
def load_infor():
'''完成对文件内数据的加载'''
global card_infors #声明全局变量
f = open("backup.data","r")
card_infors = eval(f.read()) ## eval能将字符串变成之前的类型
f.close()
5.异常处理:没有数据文件创建,有文件读取
### 没有备份文件程序出错
rm -rf backup.data python3 08-读取文件.py
Traceback (most recent call last):
File "08-读取文件.py", line 110, in <module>
main()
File "08-读取文件.py", line 74, in main
load_infor()
File "08-读取文件.py", line 66, in load_infor
f = open("backup.data","r")
FileNotFoundError: [Errno 2] No such file or directory: 'backup.data'
def load_infor():
'''完成对文件内数据的加载'''
global card_infors try:
f = open("backup.data","r")
card_infors = eval(f.read())
f.close()
except Exception: ###出现异常忽略
pass
6.完整版本
#定义一个新的list列表,用来存储名片
card_infors = [] def print_menu():
"""完成打印功能"""
print("*"*50)
print("\t名片管理系统 V3\t")
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_age = input("你要添加的年龄:")
new_qq = input("你要添加的qq:")
new_addr = input("你要添加的地址:") #定义1个新的字典dict,用来存储新的名片
new_infor = {}
new_infor["name"] = new_name
new_infor["age"] = new_age
new_infor["qq"] = new_qq
new_infor["addr"] = new_addr #将1个字典dict添加到列表list
global card_infors
card_infors.append(new_infor)
#print(card_infors) #for test 测试用的 def find_card_infor():
"""完成查询1个名片的功能"""
global card_infors
find_name = input("请输入你要查询的名字:")
flag = 0 #默认 没有查到此人
for tmp in card_infors:
if find_name in tmp["name"]:
print("%s\t%s\t%s\t%s"%(tmp["name"],tmp["age"],tmp["qq"],tmp["addr"]))
flag = 1 #表示查到此人了
break
#判断是否找到了
if flag == 0:
print("查无此人") def show_card_infor():
"""完成显示名片"""
global card_infors
print("姓名\t年龄\tqq号\t地址")
for tmp in card_infors:
print("%s\t%s\t%s\t%s"%(tmp["name"],tmp["age"],tmp["qq"],tmp["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","r")
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_card_infor() elif num == 6:
save_2_file() elif num == 7:
break
else:
print("你输入的有误,请重新输入") print("") if __name__ == "__main__":
#调用主函数
main()
day 5 名片管理系统-文件版的更多相关文章
- day 4 名片管理系统 -函数版
修改没有用函数的程序 具有独立功能的代码块 源程序 #1.打印功能信息 print("*"*50) print("\t名片管理系统 V3\t") print(& ...
- python3实现名片管理系统(文件版)
def menu(): #首先定义功能列表函数menu() print(" 名片管理系统 V1.0 ") print("1:增加新用户") print(&quo ...
- python案例:实现一个函数版的名片管理系统
本案例使用了自定义函数以及对字符串的常见操作.判断语句和循环语句等知识. 要求 必须使用自定义函数,完成对程序的模块化. 名片信息至少包括:姓名.电话.住址. 必须完成的功能:增.删.改.查.退出. ...
- Python基础综合运用——搭建名片管理系统
综合应用 —— 名片管理系统 目标 综合应用已经学习过的知识点: 变量 流程控制 函数 模块 开发 名片管理系统 系统需求 程序启动,显示名片管理系统欢迎界面,并显示功能菜单 ************ ...
- python基础提高演练(名片管理系统的开发)
综合应用 —— 名片管理系统 目标 综合应用已经学习过的知识点: 变量 流程控制 函数 模块 开发 名片管理系统 系统需求 1. 程序启动,显示名片管理系统欢迎界面,并显示功能菜单 ********* ...
- 蓝点通用管理系统V13版发布了!
蓝点通用管理系统13版已发布! 重磅新功能:系统的通知和提醒功能,增加微信方式,微信通知.微信查询数据.微信拍照上传....... 蓝点的客户管理系统.进销存管理系统.产品管理系统.工作流管理系统.投 ...
- python名片管理系统V2
主程序: #! /usr/bin env python3 # -*- coding: utf-8 -*- # 项目三: # 1.要求:编写一个名片管理系统,功能如下: # 用户输入相对应的指令,实现对 ...
- Python-控制台实现简单的名片管理系统
通过Python开发一个基于控制台的名片管理系统,具体看下图以及相关代码. cards_main.py文件中提供程序的入口 import cards_toolslx while True: # TOD ...
- day7 地址 名片管理系统
1 无限循环 (while True) break 退出 人为设计的 ,并且有退除的出口 死循环 bug 错误 2.引用 数字型
随机推荐
- JDBC(5)ResSetMetaData&DatabaseMetaData&获取数据库主键的值
ResSetMetaData 可用于获取关于 ResultSet 对象中列的类型和属性信息的对象: getColumnName(int column):获取指定列的名称 getColumnCount( ...
- 二十、在Intellij IDEA中使用Debug
Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化.通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方 ...
- 十一、IntelliJ IDEA 中的版本控制介绍(上)
咱们已经了解了很多关于 IntelliJ IDEA 的使用方法,至少可以独立的运用 IntelliJ IDEA 进行项目开发啦!但是一个人进行项目开发更趋向于理想化,更多的则是团队协同开发.这时,咱们 ...
- Xcode4.4(LLVM4.0编译器)中NSArray, NSDictionary, NSNumber优化写法
Xcode4.4(LLVM4.0编译器)中NSArray, NSDictionary, NSNumber优化写法 从xcode4.4开始,LLVM4.0编译器为Objective-C添加一些新的特性. ...
- h5中video的一些坑
最近我们的项目做了有关短视频的功能,当然视频的合成还是在客户端来完成,涉及到前端页面的部分就是要有一个H5的落地页,这个页面上要有对视频进行播放.起初我觉得这事儿还是挺简单的,不就是在页面上放一个&l ...
- 手写redis客户端
一.RESP通信协议 Redis Serialization Protocol (Redis序列化协议). 特点:容易实现.解析快.可读性强 以\r\n分割数据. 二.撸代码 package com. ...
- wso2 ei 6.4.0安装笔记
目的:将最新版(6.4.0)部署在linux服务器,与Api Manager部署在同一环境 环境: Centos 7.3 Jdk 8 Mysql 5.7 问题一: 将H2替换为Mysql5.7数据库时 ...
- reids同步机制和远程连接
RDB同步机制: 开启和关闭:默认情况下是开启了.如果想关闭,那么注释掉redis.conf文件中的所有save选项就可以了. 同步机制: save 900 1:如果在900s以内发生了1次数据更新操 ...
- 1.Python是什么
前言 这里只是根据个人的理解而谈,庸俗浅薄,不是科学定义,也可以认为是假装自己理解啦,掩耳盗铃罢了.知无涯是多么的恐怖,哈哈 计算机语言 此处的语言不同于我们生活中所说的语言,因为生活中的语言 ...
- 使用bison和yacc制作脚本语言(4)
我们现在开始设计数据结构: interpreter.h #ifndef INTERPRETER #define INTERPRETER #include "../include/eval.h ...