注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

@fc_lamp

关注Web应用解决方案MySql/PHP/Python一盏名为"飞川"的灯~

 
 
 

日志

 
 

第一个简单的python实例  

2011-03-16 14:33:00|  分类: Web技术-Python |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

  说明:该实例是实现一个邮件地址薄,可以添加,删除,修改,查找。

  代码如下:

import pickle,os,re  #导入模块(如不熟这几个模块可查阅相关资料)
print('按数字1添加新成员,按数字2删除成员,按数字3修改成员,按数字4查找成员,按数字5退出\n\n')
#注意以下方法中:变量address引用的是一个对象

def print_address():#函数必须定义在调用之前
    print('\n\n现在,你的通信录里已有这些人了:\n')
    print('name<-------------->email\n')
    for i in address:
        print('%s<---------------->%s'%(i,address[i]))
    print('\n\n')


def set_address(path):
    with open(path,'wb') as f:
        pickle.dump(address,f,True) #使用pickle来序列化存储python对象
#这里使用with来自动关闭文件
#也使用try...finally..解决方案
#(无论你以何种方式跳出with块,Python会自动关闭那个文件)


def get_address(path):
    if not os.path.exists(path):
        return {}
    with open(path,'rb') as f:
        if len(f.readline()) <=0:
            return {}
        f.seek(0)#将流对象定位到文件开头
        b = pickle.load(f)#反序列化重新使用对象
        return b


def option(path):
    op = input('操作代码(1添加,2删除,3修改,4查找,5退出):')
    if re.match("[0-9]{1}",op) == None: #使用正则
        print('操作码错误!')
        option(path)
    op = int(op)
    if op == 1:
        name = input('请输入新成员的姓名:')
        email= input('请输入新成员的Email:')
        address[name] = email
    elif op == 2:
        name = input('请输入要删除成员的姓名:')
        if name in address: #值的存在 if v in address.values()
            del address[name]
        else:
            print('成员:'+name+'不在你的联系人表中。')
    elif op == 3:
        name = input('请输入要修改成员的姓名:')
        if name in address:
            email = input('请输入成员'+name+'的邮件地址:')
            if email in address.values():
                print('\n对不起,此邮件已存在了!\n')
            else:
                address[name] = email
                print('\n修改成功!\n')
        else:
            print('\n成员 %s 不在你的联系人表中。\n'%(name))
    elif op == 4:
        name = input('请输入要查找成员的姓名:')
        if name in address:
            print('找到了 %s 成员,其信息如下:'%(name))
            print('name: %s,email: %s'%(name,address[name]))
        else:
            print('\n成员 %s 不在你的联系人表中。\n'%(name))
    elif op == 5:
        exit()#退出
      
    print_address()
    set_address(path)#重新存储
    option(path)#递归调用自己

##################运行############
    
path = 'test.pickle'
address = get_address(path)

if len(address)<1:
    print('你的通信录为空,请按数字1添加你的通信录')
    op = input('请输入:')
    if len(op)<1 or int(op) != 1:
        print('非法输入')
    else:
        name = input('请输入姓名:')
        email= input('请输入Email:')
        address[name] = email
        set_address(path)
        print_address()
else:
    print_address()
option(path)

结果:

 第一个简单的python实例 - fc-lamp - fc-lamp的博客


附:关于正则http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html

          关于持久化(pickle):http://www.ibm.com/developerworks/cn/linux/l-pypers/

  评论这张
 
阅读(299)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017