如何用python写java班级通讯录录

你的位置: >
> python写一个通讯录之step by step
编写过程:
第一步:手动代码堆积
第二步:函数复用
第三步:数据持久化之数据保存
第四步:数据持久化之数据读取
第五步:数据持久化之数据删除
第六步:数据持久化之数据更新
初稿—》数据持久化之保存数据—–》数据持久化之加载数据—–》数据持久化之删除数据—-》数据持久化之检索数据—》数据持久化之数据更新
本演示不为堆积代码,仅为梳理一个编码的概念过程~希望对你有所帮助
第一步:手工代码堆积
#!/usr/bin/env&python
#coding:utf8
#Author:zhuima
#Function:Create&the&address&book&step&by&step
#Version:0.1
#Initialized&variables
msg&=&'''
&&&&1.&Add&information
&&&&2.&Display&information
&&&&0.&Exit&
'''
#txl&content&like&this&tex&=&[['name','gender','telphone'],['name','gender','telphone']]
#define&Add
#define&display
while&True:
&&&&print&msg
&&&&op&=&raw_input('Please&Select&&&&&')
&&&&if&op&==&'1':
&&&&&&&&name&=&raw_input('Please&Enter&Your&name&&&&&')
&&&&&&&&gender&=&raw_input('Please&Enter&Your&gender&&&&&')
&&&&&&&&tel&=&raw_input('Please&Enter&Your&Telphone&Number&&&&&')
&&&&&&&&txl.append([name,gender,tel])
&&&&elif&op&==&'2':
&&&&&&&&for&list&in&txl:
&&&&&&&&&&&&&&&for&info&in&list:
&&&&&&&&&&&&&&print&info,
&&&&&&&&&&&print&''
&&&&elif&op&==&'0':
&&&&&&&&break
&&&&&&&&print&''
&&&&&&&&print&'Unkonw&Choose,Please&Select&again!'
&&&&&&&&print&''
用到的python功能:
while循环:实现循环输入
if判断:判断输入内容并进行调用相关函数
break:跳槽循环
列表:在当前会话中保存数据
三引号的使用
测试结果:
& & print打印时,不换行使用','来实现,但是针对嵌套列表来说,很可能出现下面的情况,这个时候在跳出当前循环print空白行即可。
第二步:函数复用
如此我们也能实现我们想要的功能,但是总感觉有点别扭,要不要来点高大上的,来来来,叫来函数来一发~
#!/usr/bin/env&python
#coding:utf8
#Author:zhuima
#Function:Create&the&address&book&step&by&step
#Initialized&variables
msg&=&'''
&&&&1.&Add&information
&&&&2.&Display&information
&&&&0.&Exit&
'''
#txl&content&like&this&tex&=&[['name','gender','telphone'],['name','gender','telphone']]
#define&Add
def&Add():
&&&&name&=&raw_input('Please&Enter&Your&name&&&&&')
&&&&gender&=&raw_input('Please&Enter&Your&gender&&&&&')
&&&&tel&=&raw_input('Please&Enter&Your&Telphone&Number&&&&&')
&&&&txl.append([name,gender,tel])
#define&display
def&Disp():
&&&&for&list&in&tel:
&&&&&&&&for&info&in&list:
&&&&&&&&&&&&print&info,
while&True:
&&&&print&msg
&&&&op&=&raw_input('Please&Select&&&&&')
&&&&if&op&==&'1':
&&&&&&&&Add()
&&&&elif&op&==&'2':
&&&&&&&&Disp()
&&&&elif&op&==&'0':
&&&&&&&&break
&&&&&&&&print&''
&&&&&&&&print&'Unkonw&Choose,Please&Select&again!'
&&&&&&&&print&''
引入新功能:
& & python函数功能
测试结果:
测试结果其实和第一步是一样的,没有什么区别~
第三步:数据持久化之保存数据
这里我们用函数来实现了格式化代码,复用等功能,但是我关闭了当前会话,所有的东西又都没了,那这就是闹玩呗,没有实际意义啊~
所以这里我们要引入数据持久化的概念~(这里仅讨论文件保存形式的数据持久化,不涉及数据库相关)
引入功能:
& & 字符串和列表转换,将列表转成字符串,然后写入文件
代码如下:
#define&save
def&Save():
&&&&temp&=&[]
&&&&for&info&in&txl:
&&&&&&&&temp.append(','.join(info))
&&&&&&&&s&=&'\n'.join(temp)
&&&&&&&&fp&=&file('txl.db','w')
&&&&&&&&fp.write(s)
&&&&&&&&fp.close()
while&True:
&&&&print&msg
&&&&op&=&raw_input('Please&Select&&&&&')
&&&&if&op&==&'1':
&&&&&&&&Add()
&&&&&&&&Save()
第四步:数据持久化之数据读取
引入功能:
& & 字符串和列表转换,将字符串传换成列表,然后追加到列表中
代码如下:
& & & & & &
& & & & & &
#define&load
def&Load():
&&&&fp&=&file('txl.db','r')
&&&&content&=&fp.read()
&&&&temp&=&content.split('\n')
&&&&for&info&in&temp:
&&&&&&&&txl.append(info.split(','))
while&True:
测试效果:
第五步:数据持久化之删除数据
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &&
引入功能:
& & 检索账号,找到账号对应的子列表所在的索引,进行删除操作
& & 如何在嵌套列表中找到value对应的索引?
代码片段如下:
msg&=&'''
&&&&1.&Add&information
&&&&2.&Display&information
&&&&3.&Delete&by&name
&&&&0.&Exit&
'''
#define&del
def&Del():
&&&&name&=&raw_input('Please&Enter&which&one&name&you&want&to&delete&&&&&')
&&&&for&sub&in&txl:
&&&&&&&&if&sub[0]&==&name:
&&&&&&&&&&&&txl.remove(sub)
&&&&&&&&&&&&break
while&True:
&&&&print&msg
&&&&op&=&raw_input('Please&Select&&&&&')
&&&&if&op&==&'1':
&&&&&&&&Add()
&&&&&&&&&&&&&&&&Save()
&&&&elif&op&==&'2':
&&&&&&&&Disp()
&&&&elif&op&==&'3':
&&&&&&&&&&&&&&&&Del()
&&&&&&&&&&&&&&&&Save()
测试效果:
第六步:数据持久化之更新数据
引入功能:
& & 和删除数据同理,检索账号,找到账号对应的子列表所在的索引,进行相关value的更新操作
代码片段如下:
#Initialized&variables
msg&=&'''
&&&&1.&Add&information
&&&&2.&Display&information
&&&&3.&Delete&by&name
&&&&4.&Update&by&name
&&&&0.&Exit&
'''
info&=&'''
&&&&001.&name
&&&&002.&gender
&&&&003.&tel
&&&&004.&all
'''
#define&change&
def&Change():
&&&&xingming&=&raw_input('Please&Enter&which&one&name&you&want&to&change&&&&&')
&&&&print&info
&&&&op&=&raw_input('Please&select&which&one&you&want&to&change:&')
&&&&for&sub&in&txl:
&&&&&&&&if&sub[0]&==&xingming:
&&&&&&&&&&&&if&op&==&'001':
&&&&&&&&&name&=&raw_input('Please&Enter&Your&name:&')
&&&&&&&&&&&&&&&&&txl[txl.index(sub)][0]&=&name
&&&&&&&&&&&&elif&op&==&'002':
&&&&&&&&&gender=&raw_input('Please&Enter&Your&gender:&')
&&&&&&&&&&&&&&&&&txl[txl.index(sub)][1]&=&gender
&&&&&&&&&&&&elif&op&==&'003':
&&&&&&&&&tel&=&raw_input('Please&Enter&Your&tel:&')
&&&&&&&&&&&&&&&&&txl[txl.index(sub)][2]&=&tel
&&&&&&&&else:
&&&&&&&&&name&=&raw_input('Please&Enter&Your&name:&')
&&&&&&&&&gender=&raw_input('Please&Enter&Your&gender:&')
&&&&&&&&&tel&=&raw_input('Please&Enter&Your&tel:&')
&&&&&&&&&&&&&txl[txl.index(sub)]&=&[name,gender,tel]&&&&
&&&&&&&&&&&&break
while&True:
&&&&print&msg
&&&&op&=&raw_input('Please&Select&&&&&')
&&&&if&op&==&'1':
&&&&&&&&Add()
&&&&&&&&&&&&&&&&Save()
&&&&elif&op&==&'2':
&&&&&&&&Disp()
&&&&elif&op&==&'3':
&&&&&&&&&&&&&&&&Del()
&&&&&&&&&&&&&&&&Save()
&&&&elif&op&==&'4':
&&&&&&&&&&&&&&&&Change()
&&&&&&&&&&&&&&&&Save()
测试效果:
整体思路:
完成一个通讯录的增删查改,局限于列表,完善自己的组建代码的一个思路,搭建起一套框架。
你要思考的问题:
初始化数据
如何增加数据
数据如何写入到文件
如何从文件中读取数据到列表
如何删除数据并同步到文件
如何更新数据并同步到文件
完整代码块:
#!/usr/bin/env&python
#coding:utf8
#Author:zhuima
#Function:Create&the&address&book&step&by&step
#Initialized&variables
msg&=&'''
&&&&1.&Add&information
&&&&2.&Display&information
&&&&3.&Delete&by&name
&&&&4.&Update&by&name
&&&&0.&Exit&
'''
info&=&'''
&&&&001.&name
&&&&002.&gender
&&&&003.&tel
&&&&&&&&004.&all
'''
#txl&content&like&this&tex&=&[['name','gender','telphone'],['name','gender','telphone']]
#define&Add
def&Add():
&&&&name&=&raw_input('Please&Enter&Your&name&&&&&')
&&&&gender&=&raw_input('Please&Enter&Your&gender&&&&&')
&&&&tel&=&raw_input('Please&Enter&Your&Telphone&Number&&&&&')
&&&&txl.append([name,gender,tel])
#define&display
def&Disp():
&&&&for&list&in&txl:
&&&&&&&&for&info&in&list:
&&&&&&&&print&info,
&&&&&&&&&&&&print&''
#define&save
def&Save():
&&&&temp&=&[]
&&&&for&info&in&txl:
&&&&&&&&temp.append(','.join(info))
&&&&&&&&s&=&'\n'.join(temp)
&&&&&&&&fp&=&file('txl.db','w')
&&&&&&&&fp.write(s+'\n')
&&&&&&&&fp.close()
#define&load
def&Load():
&&&&import&os
&&&&if&&os.path.exists('txl.db'):
&&&&&&&&fp&=&file('txl.db','r')
&&&&&&&&content&=&fp.read()
&&&&&&&&fp.close()
&&&&&&&&temp&=&content.split('\n')
&&&&&&&&for&info&in&temp:
&&&&&&&&&&&&txl.append(info.split(','))
&&&&&&&&fp&=&file('txl.db','w')
&&&&&&&&fp.close()
#define&del
def&Del():
&&&&name&=&raw_input('Please&Enter&which&one&name&you&want&to&delete&&&&&')
&&&&for&sub&in&txl:
&&&&&&&&if&sub[0]&==&name:
&&&&&&&&&&&&txl.remove(sub)
&&&&&&&&&&&&break
#define&change&
def&Change():
&&&&xingming&=&raw_input('Please&Enter&which&one&name&you&want&to&change&&&&&')
&&&&print&info
&&&&op&=&raw_input('Please&select&which&one&you&want&to&change:&')
&&&&for&sub&in&txl:
&&&&&&&&if&sub[0]&==&xingming:
&&&&&&&&&&&&if&op&==&'001':
&&&&&&&&&name&=&raw_input('Please&Enter&Your&name:&')
&&&&&&&&&&&&&&&&&txl[txl.index(sub)][0]&=&name
&&&&&&&&&&&&elif&op&==&'002':
&&&&&&&&&gender=&raw_input('Please&Enter&Your&gender:&')
&&&&&&&&&&&&&&&&&txl[txl.index(sub)][1]&=&gender
&&&&&&&&&&&&elif&op&==&'003':
&&&&&&&&&tel&=&raw_input('Please&Enter&Your&tel:&')
&&&&&&&&&&&&&&&&&txl[txl.index(sub)][2]&=&tel
&&&&&&&&else:
&&&&&&&&&name&=&raw_input('Please&Enter&Your&name:&')
&&&&&&&&&gender=&raw_input('Please&Enter&Your&gender:&')
&&&&&&&&&tel&=&raw_input('Please&Enter&Your&tel:&')
&&&&&&&&&&&&&txl[txl.index(sub)]&=&[name,gender,tel]&&&&
&&&&&&&&&&&&break
while&True:
&&&&print&msg
&&&&op&=&raw_input('Please&Select&&&&&')
&&&&if&op&==&'1':
&&&&&&&&Add()
&&&&&&&&&&&&&&&&Save()
&&&&elif&op&==&'2':
&&&&&&&&Disp()
&&&&elif&op&==&'3':
&&&&&&&&&&&&&&&&Del()
&&&&&&&&&&&&&&&&Save()
&&&&elif&op&==&'4':
&&&&&&&&&&&&&&&&Change()
&&&&&&&&&&&&&&&&Save()
&&&&elif&op&==&'0':
&&&&&&&&break
&&&&&&&&print&''
&&&&&&&&print&'Unkonw&Choose,Please&Select&again!'
&&&&&&&&print&''
作者:追马
转载请注明: &
与本文相关的文章python实现简单通讯录 - 开源中国社区
当前访客身份:游客 [
当前位置:
发布于 日 15时,
初学python,自己写的面向过程的简单通讯录,希望大家多多指点。
代码片段(1)
address_book.py&~&4KB&&&&
#!/usr/bin/python
import pickle
#判断通讯录是否存在,不存在则创建空通讯录
if os.path.exists(r'E:\Person.data')==False:
f=open('E:\Person.data','wb')
temp={'total' : 0}
pickle.dump(temp,f)
#添加联系人
def add():
f=open('E:\Person.data','rb')
a=pickle.load(f)
name = input('请输入所要添加联系人的姓名:')
for key in a.keys():
if key==name and b &= a['total']+1:
print("联系人已存在,添加失败!")
if b==a['total']+1 and key != name:
number = input('请输入号码:')
information={name : number}
a['total']+=1
a.update(information)
f=open('E:\Person.data','wb')
pickle.dump(a,f)
print('添加成功!')
#显示所有联系人
def showall():
f=open('E:\Person.data','rb')
a=pickle.load(f)
print("一共有{}个联系人.".format(a['total']))
for key in a.keys():
if key != 'total':
print("{""}:{""}".format(key,a[key]))
#退出通讯录
def exit():
exec("quit()")
def search(name):
f=open('E:\Person.data','rb')
a=pickle.load(f)
for key in a.keys():
if key==name and b&=a['total']+1:
print("{}的号码是: {}".format(name,a[key]))
if b==a['total']+1 and key != name:
print("联系人不存在!")
def deleate(name):
f=open('E:\Person.data','rb')
a=pickle.load(f)
for key in a.keys():
if key==name and b&=a['total']+1:
a.pop(name)
a['total']-=1
f=open('E:\Person.data','wb')
pickle.dump(a,f)
print("删除成功!")
if b==a['total']+1 and key != name:
print("联系人不存在!无法删除!")
def change ():
x=input("请输入所要修改联系人姓名:")
f=open('E:\Person.data','rb')
a=pickle.load(f)
for key in a.keys():
if key==x and b&=a['total']+1:
y=input("请输入修后的号码:")
f=open('E:\Person.data','wb')
pickle.dump(a,f)
print("修改成功!")
if b==a['total']+1 and key != name:
print("联系人不存在!")
def point ():
print("*******************************")
print("显示提示信息:*")
print("显示所有联系人:0")
print("查找联系人:1")
print("添加联系人:2")
print("删除联系人:3")
print("更改联系人资料:4")
print("退出通讯录:5")
print("*******************************")
while True:
x=input("请输入您的选择:")
if x == '2':
if x== '0':
if x=='5':
if x=='1':
name=input("请输入所要查找联系人的姓名:")
search(name)
if x=='3':
name=input("请输入所要删除联系人的姓名:")
deleate(name)
if x== '4':
if x=='*':
print("输入选项不存在,请重新输入!")
开源中国-程序员在线工具:
感谢分享,我也在学习python中
2楼:qz 发表于
互勉,多交流一起进步啊,呵呵
3楼:xfk 发表于
where 循环里面不能输入“1”,“2”......
这样是输入的字符串,运行错误,直接写x==1,x==2就好了。
还有加上各种异常处理会更好使,呵呵。
4楼:qz 发表于
引用来自“邓永凯”的评论where 循环里面不能输入“1”,“2”......
这样是输入的字符串,运行错误,直接写x==1,x==2就好了。
还有加上各种异常处理会更好使,呵呵。
谢谢你的建议,开始写的是a==1的,但是不能识别,就改成这样了,异常处理后续会加上。呵呵,谢谢了。
5楼:北坡???? 发表于
引用来自“qz”的评论引用来自“邓永凯”的评论where 循环里面不能输入“1”,“2”......
这样是输入的字符串,运行错误,直接写x==1,x==2就好了。
还有加上各种异常处理会更好使,呵呵。
谢谢你的建议,开始写的是a==1的,但是不能识别,就改成这样了,异常处理后续会加上。呵呵,谢谢了。你怎么把数字当成字符串了呢?
6楼:qz 发表于
引用来自“alemic”的评论引用来自“qz”的评论引用来自“邓永凯”的评论where 循环里面不能输入“1”,“2”......
这样是输入的字符串,运行错误,直接写x==1,x==2就好了。
还有加上各种异常处理会更好使,呵呵。
谢谢你的建议,开始写的是a==1的,但是不能识别,就改成这样了,异常处理后续会加上。呵呵,谢谢了。你怎么把数字当成字符串了呢?恩,前边没有标示是int,直接用要转换,所以就当字符用了。。。
开源从代码分享开始
qz的其它代码EXT+ PHP班级通讯录_运用EXT技术编写
为鼓励上传资源,我们采用积分下载方式,希望您能发布更多更好的资源互相分享
1.上传软件或电子书,源码,资料等,审核后即获2积分;如发布时设了下载需积分,其他用户下载后你将获得相应积分
2.当您首次注册时,可以获送10个下载积分,供您下载资源和熟悉网站下载的使用
3.发现资源有误或其他问题,通过举报按钮反馈后我们将奖励积分
4.您可以在论坛通过发帖等方式获取
5.参加本站可以在有效期内不限次数下载
6.您也(1元=10积分)或
7.我们会不定期举办各种活动,参加活动可以获取积分,请关注下载频道首页公告。
您可能遇到这些“伪问题”:
1.资料无法解压:
请确保所有分卷均下载完毕,如果有未知后缀文件,请搜索相应解压软件;
2.chm文件无内容:
您的电脑锁定了这一文件,请右击文件属性,点击右下方“解除锁定”,关闭文件后再打开;
3.下载不下来:
请尝试重新下载(重新下载不扣积分);
4.杀毒软件报毒:
黑客安全及破解类软件容易报毒,但可正常使用,如担心安全请谨慎使用。
运用EXT技术编写的班级通讯录,+MYSQL,页面及数据库编码均为UTF8。通讯录界面是用EXT默认皮肤风格完成,清新自然,无刷新添加、删除通讯录数据,每列可拖动宽度,并且可以更换显示位置,程序附有数据库脚本文件,比较适合学习在PHP中使用EXT技术。   调试时需先配置数据库连接信息,在config.php文件里,数据库地址、用户名、密码及数据库名称;页面编辑和数据库编码都要设为UTF8,否则会出现乱码或页面无显示。
您对本软件有什么意见或着疑问吗?请到您的关注和建议是我们前行的参考和动力
下载地址:
您正在下载:EXT+ PHP班级通讯录_运用EXT技术编写
热门最新推荐
您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。}

我要回帖

更多关于 班级通讯录app 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信