学习python(4) 练习词典功能 查询增加删除更新

来源:互联网 发布:淘宝分割线素材 编辑:程序博客网 时间:2024/05/22 08:02
#-*-coding:utf-8 -*-"""dtc查询单词功能增加单词功能删除单词功能更新单词功能文件内容如下:P0009 Engine Position System Performance Bank 2P000A A Camshaft Position Slow Response Bank 1P000B B Camshaft Position Slow Response Bank 1P000C A Camshaft Position Slow Response Bank 2P000D B Camshaft Position Slow Response Bank 2"""import osdef search():w = raw_input("search word : ")dic = {}f = open("/Python_Data/work/123_OBDII_dtc_en_2.txt",'r')lines = f.readlines()search_success = 0for line in lines:key = line[:5]comment = line[6:]dic[key] = commentif w in dic.keys():search_success = 1print "word\tmean\n"print w,dic[w],print "========查询完毕=============="f.close()breakif search_success ==0:print "Not found~!"def add():while 1:w = raw_input("add word : ")dic = {}f = open("/Python_Data/work/123_OBDII_dtc_en_2.txt",'r')lines = f.readlines()search_success = 0for line in lines:key = line[:5]comment = line[6:]dic[key] = commentif w in dic.keys():search_success = 1f.close()breakif search_success ==1:print"该单词已经存在,重新添加~"else:f.close()breakmean = raw_input("this word mean : ")f1 = open("/Python_Data/work/123_OBDII_dtc_en_2.txt",'a')f1.write(w+' '+ mean + '\n')print"=========添加成功============="f1.close()def delete():w = int(raw_input("delete 哪一行数 : "))i =1f = open("/Python_Data/work/123_OBDII_dtc_en_2.txt",'r')temp = open("/Python_Data/work/temp.txt",'w')while 1:line = f.readline()if line:if i == w:i = i +1print "找到第%d: %s"%(w,line)continueelse:i = i +1writeline = '%s'% linetemp.write(writeline)else:print "文件已到末尾"breakf.close()temp.close()os.remove("/Python_Data/work/123_OBDII_dtc_en_2.txt")os.rename("/Python_Data/work/temp.txt","/Python_Data/work/123_OBDII_dtc_en_2.txt")print "============删除成功===============!"def update():w = int(raw_input("update 哪一行数 : "))f = open("/Python_Data/work/123_OBDII_dtc_en_2.txt",'r+')lines = f.readlines()mean = raw_input("new mean:")lines[w] = mean+ "\n"f = open("/Python_Data/work/123_OBDII_dtc_en_2.txt",'w+')f.writelines(lines)print "========更新完毕=============="f.close()def main():while 1:print "||=================||\n"print "||请选择下面功能...||\n"print "|| a 查询单词功能  ||\n"print "|| b 增加单词功能  ||\n"print "|| c 删除单词功能  ||\n"print "|| d 更新单词功能  ||\n"print "|| e 退出单词功能  ||\n"print "||=================||\n"i = raw_input("选中 : ")if i == 'a'or i == 'A':search()elif i == 'b' or  i =='B':add()elif i == 'c' or i =='C':delete()elif i == 'd' or i == 'D':update()elif i =='e' or i =='E':exit()if __name__== '__main__':main()


下面学习开源网上的版本:对比一下差距

 

# -*- coding: cp936 -*-import os # 读取数据 fname = 'myphonebookdata' if fname in os.listdir('.'):     data = {line.strip().split('~')[0]:line.strip().split('~')[1] for line in open(fname,'r').readlines()} else:     data = {} #主循环 ask = raw_input('欢迎使用电话本:-) 添加(A)/查找(S)/删除(D)/退出(<ENTER>)? ').strip().lower() while len(ask)>0:     if ask=='a':         print '开始添加...'         name = raw_input('名字: ').strip()         while name in data:             print '名字已经存在,请重新输入...'             name = raw_input('名字: ').strip()         number=raw_input('电话号码: ').strip()         while len(number)==0:             print '空电话号码,请重新输入...'             number=raw_input('电话号码: ').strip()         data[name] = number         print '添加成功!'     elif ask=='s':         print '开始查找...'         name = raw_input('名字: ').strip()         if name in data:             print '名字\t\t电话号码'             print '%s\t\t%s' % (name,data[name])             print '查找完成!'         else:             print '找不到!'     elif ask=='d':         print '开始删除...'         name = raw_input('名字: ').strip()         if name in data:             del data[name]             print '删除成功!'         else:             print '没有要删除的名字!'     else:         print '未定义操作,请重新输入'     print     ask = raw_input('欢迎使用电话本:-) 添加(A)/查找(S)/删除(D)/退出(<ENTER>)? ').strip().lower() # 写入数据 s = '' for k in data:     s += '%s~%s\n' % (k,data[k]) fout = open(fname,'w') fout.write(s) fout.close() 

 

够简洁,最后才对文件写操作。

0 0
原创粉丝点击