Python初学练习02:简易通讯录-优化搜索功能

#!/usr/bin/env python
import tab,os,sys
exitcheck = False
listfile = ‘Addresslist.data‘
Dictionary = {}
#with open(listfile,‘a‘) as datafile
datafile=file(listfile,‘r‘)
datafile.seek(0)
for line in datafile.readlines():
 id=line.split()[0]
 name=line.split()[1]
 phone=line.split()[2]
 email=line.split()[3]
 Dictionary[id]=(name,phone,email)
#print Dictionary

while exitcheck is False:
 print "Welcome AddressList!"
 print "  1#Display ALL List"
 print "  2#Find Item"
 print "  3#Addend Item"
 print "  4#Dell Item"
 print "  5#exit"
 InputOption=int(raw_input("Please Input option[1-5]:").strip())
 if InputOption == 1:
  print "1#Display ALL List"
  while InputOption != "q":
   page=0
   for key in Dictionary.keys():
    print key,Dictionary[key][0],Dictionary[key][1],Dictionary[key][2]
    if page == 4 :
     page=0
     InputOption = raw_input("q:break anyone:next").strip()
     if InputOption == "q": break
    else:page=page+1
   if InputOption != "q":
    InputOption = raw_input("q:break anyone:restart").strip()
 elif InputOption == 2:
  while InputOption != "q":
   search = raw_input("Input Search Key:[>3 char,q:break]").strip()
   InputOption = search
   searchcount=0
   findkeyid = ‘Null‘
   if len(search) == 0:
    continue
   for id in Dictionary.keys():
    valus=‘ ‘.join(Dictionary[id])
    if valus.count(search) !=0 :
     p_str= valus[:valus.find(search)]
     p_str=p_str+‘\033[31;1m‘+search+‘\033[0m‘
     p_str=p_str+valus[valus.find(search)+len(search):]
     print p_str
     findkeyid = id
     searchcount+=1
   if findkeyid !=‘Null‘ and searchcount ==1:
    InputOption = raw_input("Option[d:del.  e:edit. anyone:break")
    if InputOption == "d":
     InputOption =raw_input("delete it yes or no?").strip()
     if InputOption =="y":
      del Dictionary[findkeyid]
      print "Del success!"
      InputOption = ‘‘
    elif InputOption =="e":
      #print findkeyidi
      print findkeyid+Dictionary[findkeyid][0]+" "+Dictionary[findkeyid][1]+" "+Dictionary[findkeyid][2]   
      nkeyid=findkeyid
      nname=raw_input("NewName:").strip()
      nphone=raw_input("NewPhone:").strip()
      nemail=raw_input("NewEmail:").strip()
      if len(nkeyid)>0:
       Dictionary[nkeyid]=(nname,nphone,nemail)
       print "Item Edit success! "
       #InputOption = "q"
   elif findkeyid >0:
    print "Find count:%s" % searchcount
   else:
    print "Not Find Item"
 elif InputOption ==3:
  while InputOption != "q":
   print "3#Addend Item"
   nkeyid=""
   nname=""
   nphone=""
   nemail=""
   while len(nkeyid) == 0 or len(nname) == 0 :
    nkeyid=raw_input("ID:").strip()
    nname=raw_input("Name:").strip()
    nphone=raw_input("Phone:").strip()
    nemail=raw_input("Email:").strip()
    if len(nkeyid) > 0 and len(nname) > 0 :
     for keyid in Dictionary.keys():
      if keyid == nkeyid :
       print "ID is Repeat."
       nkeyid=""
       break
     if len(nkeyid)>0:
      Dictionary[nkeyid]=(nname,nphone,nemail)
      print "Item Add success! "
      InputOption = "q"
    else:
     print "ID or name is Null."

elif InputOption ==4:
  while InputOption != "q":
   print "4#Dell Item"
   delkeyid=raw_input("DELETE ID:").strip()
   if len(delkeyid) > 0:
    del Dictionary[delkeyid]
    print "Del success!"
    InputOption = ‘q‘
   
 elif InputOption ==5:
  print "5#Exit"
  break
 savefile = file(listfile,‘w‘)
 for key in Dictionary.keys():
  str = key + ‘ ‘ + Dictionary[key][0] + ‘ ‘ + Dictionary[key][1] + ‘ ‘ + Dictionary[key][2] + ‘\n‘
  savefile.write(str)
 savefile.close

时间: 2024-10-12 22:11:51

Python初学练习02:简易通讯录-优化搜索功能的相关文章

Python初学练习02:简易通讯录

效果图: #!/usr/bin/env pythonimport tab,os,sysexitcheck = Falselistfile = 'Addresslist.data'Dictionary = {}#with open(listfile,'a') as datafiledatafile=file(listfile,'r')datafile.seek(0)for line in datafile.readlines(): id=line.split()[0] name=line.spli

python初学day2--(字符串(str)内部功能简介)

Str内部功能简介 1,pitalize(self): 将字符串首字母变成大写 s = 'hello' result = s.capitalize() print(result)              结果: Hello 2,casefold(self): 见字符串变成小写 s = 'HELLO' result = s.casefold() print(result)      结果:hello 3,center(self, width, fillchar=None):经字符串居中,默认用空

python 初学02 替换文件内容

用python替换文件内容的方法,搜了网上许多例子,又请教了朋友. 把完整的实现流程写一下,希望对大家有所帮助. 要求:目标文件中有一个字段为no=x x为0.1.2……,将其替换为no=0 1 import re 2 fobj = open("goal.ini", "r") 3 f = re.sub("no=\d+", "no=0", fobj.read()) 4 fobj.close() 5 fobj = open(&qu

Python 和 Elasticsearch 构建简易搜索

Python 和 Elasticsearch 构建简易搜索 作者:白宁超 2019年5月24日17:22:41 导读:件开发最大的麻烦事之一就是环境配置,操作系统设置,各种库和组件的安装.只有它们都正确,软件才能运行.如果从一种操作系统里面运行另一种操作系统,通常我们采取的策略就是引入虚拟机,比如在 Windows 系统里面运行 Linux 系统.这种方式有个很大的缺点就是资源占用多.冗余步骤多.启动慢.目前最流行的 Linux 容器解决方案之一就是Docker,它最大优点就是轻量.资源占用少.

python 初学03 Eric+PyQt+python IDE与界面程序

近期一直在学习python和批处理,来将工作中的手工操作的低效环节用脚本自动实现. 已经实现了几个脚本.但是命令行窗口,总是不太友好,对执行结果的反馈也不清楚,就想实现可视化. 在网上找到Python可视化的编程的一个方法,周末专心实现了一下,效果还行,算是有头绪了. http://blog.sina.com.cn/s/blog_514104fc0101c8yi.html 主要是按照上面这篇博客的方法实现的.感谢作者. 一.环境与软件版本 Eric特别挑软件版本,与PyQt 和 python的版

python并发编程02/多进程

目录 python并发编程02/多进程 1.进程创建的两种方式 1.1开启进程的第一种方式 1.2开启进程的第二种方式 1.3简单应用 2.进程pid 2.1命令行获取所有的进程的pid tasklist 2.2代码级别如何获取一个进程的pid 2.3获取父进程(主进程)的pid 3.验证进程之间的空间隔离 4.进程对象join方法 5.进程对象其他属性 6.守护进程 python并发编程02/多进程 1.进程创建的两种方式 1.1开启进程的第一种方式 from multiProcessing

倒油问题,广度优化搜索,java

有一位厨师要从盛12斤油(a桶)的桶中倒出6斤油来,可是手边只有盛8斤油(b桶)和盛5斤油(c桶)的两个桶,问如何操作才能将6斤取出来呢? class DumpOilBFS: import cn.hncu.sreach.putOil.common.Bucket; import cn.hncu.sreach.putOil.common.DumpCase; import cn.hncu.sreach.putOil.common.MySet; /* 有一位厨师要从盛12斤油(a桶)的桶中倒出6斤油来,

python 基础干货 02

list 与 tuple list 类似 数组 tuple 跟 list 一样, 只是一旦定义, 里边的内容不可以改变. 这样, 上边的内容就不可以改变了. "可变的" tuple, 不是说 tuple 是不可以改变的么? 想内存 dict 与 set dict 是 python内置字典, 其他语言中称为 map, 使用键-值(key-value)存储,具有极快的查找速度. dict 中是没有顺序先后关系的. 和list比较,dict有以下几个特点: 1. 查找和插入的速度极快,不会随

Python标准库02 时间与日期 (time, datetime包)

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python具有良好的时间和日期管理功能.实际上,计算机只会维护一个挂钟时间(wall clock time),这个时间是从某个固定时间起点到现在的时间间隔.时间起点的选择与计算机相关,但一台计算机的话,这一时间起点是固定的.其它的日期信息都是从这一时间计算得到的.此外,计算机还可以测量CPU实际上运行的时间,也就是处理器时间(processor clock time),以测量计