个人感觉学习一门新语言,简单的语法懂一点足矣。接下来就是编程。读懂别人程序的每一句,理解每一句的意义。

#Filename:MyAddressBook.py

import cPickle as p

import os

#Class Item

class Item:

    def __init__(self,name,age,gender):

        self.name = name

        self.age = age

        self.gender = gender

#the main menu of address book   

def menu():

    '''the main menu of address book'''

    print ''

    print '1.Insert an item'

    print '2.Delete an item'

    print '3.Modify an item'

    print '4.Display all items'

    print '5.Sort all items'

    print '6.Exit the program'

    print 'What do you want to do?'

    

#initialization of system, load the member list

def begin():

    '''initialization of system, load the member list'''

    global itemlist

    if os.path.exists('memberlist.data') == True:#to judge whether the file exists

        listfile = file('memberlist.data','r')

        if len(listfile.read())!=0:#to judge whether the file is empty

            itemlist = p.load(listfile)        

        listfile.close()

#exitance of system, store the menber list

def end():

    '''exitance of system, store the menber list'''

    global itemlist

    listfile = file('memberlist.data','w+')

    p.dump(itemlist,listfile)

    listfile.close()

#insert an item into the member list   

def insert():

    '''insert an item into the member list'''

    name = raw_input('Enter name:')

    age = int(raw_input('Enter age:'))

    gender = raw_input('Enter gender:')

    item = Item(name,age,gender)

    global itemlist

    itemlist.append(item)

#print an item

def output(item):

    '''print an item'''

    print '%-15s%-5d%s'%(item.name,item.age,item.gender)

#print all items       

def display():

    '''print all items'''

    global itemlist

    l = len(itemlist)

    print 'name           age  gender'

    for i in range(0,l):

        output(itemlist[i])

    print ''

#delete an item by name from member list

def delete():

    '''delete an item by name from member list'''

    name = raw_input('Enter the name you want to delete:')

    global itemlist

    l = len(itemlist)

    for i in range(0,l):

        if (itemlist[i].name == name):

            itemlist.pop(i)

#update an item

def update(item):

    '''update an item'''

    item.name = raw_input('Enter name:')

    item.age = int(raw_input('Enter age:'))

    item.gender = raw_input('Enter gender:')

#update an item's information by name 

def modify():

    '''update an item's information by name'''

    name = raw_input('Enter the name you want to modify:')

    global itemlist

    l = len(itemlist)

    for i in range(0,l):

        if (itemlist[i].name == name):

            update(itemlist[i])

    print 'Update done!'

#sort all items by name

def sort():

    global itemlist

    itemlist.sort(None,key = lambda item:item.name)

#Here are the scripts

itemlist = [] #Notice here!!!

begin()

while True:

    menu()

    sel = int(raw_input())

    if sel == 1:

        insert()

    elif sel == 2:

        delete()

    elif sel == 3:

        modify()

    elif sel == 4:

        display()

    elif sel == 5:

        sort()

    else:

        break

end()

print 'Good Bye!'

pytion学习1的更多相关文章

  1. 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代

    2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...

  2. Angular2学习笔记(1)

    Angular2学习笔记(1) 1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之 ...

  3. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  4. 消息队列——RabbitMQ学习笔记

    消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...

  5. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  6. Unity3d学习 制作地形

    这周学习了如何在unity中制作地形,就是在一个Terrain的对象上盖几座小山,在山底种几棵树,那就讲一下如何完成上述内容. 1.在新键得项目的游戏的Hierarchy目录中新键一个Terrain对 ...

  7. 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...

  8. 菜鸟Python学习笔记第一天:关于一些函数库的使用

    2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...

  9. 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)

    前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...

随机推荐

  1. 在服务器端将XML转换成HTML

    以下是在服务器上转换XML文件所需要的简单源代码: <% 'Load the XML set xml = Server.CreateObject("Microsoft.XMLDOM&q ...

  2. Python静态网页爬虫相关知识

    想要开发一个简单的Python爬虫案例,并在Python3以上的环境下运行,那么需要掌握哪些知识才能完成一个简单的Python爬虫呢? 爬虫的架构实现 爬虫包括调度器,管理器,解析器,下载器和输出器. ...

  3. php大力力 [041节] 今天没有写日志哈

    php大力力 [041节]  今天没有写日志哈  如何下拉,左边的side颜色  能顺延下去?? 今天做了一个表格显示

  4. yum命令详解

    yum(全 称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理,能够从指定的服务器自动下载 ...

  5. BZOJ 1798 (线段树||分块)的标记合并

    我原来准备做方差的.. 结果发现不会维护两个标记.. 就是操作变成一个 a*x+b ,每次维护a , b 即可 加的时候a=1 ,b=v 乘的时候a=v ,b=0 #include <cstdi ...

  6. Windows和Unix下的编码问题

    今天测试shell脚本时,执行报错: ./report.sh: /tmp/tmp.E8ekx6r5Qq/report.sh: /bin/bash^M: bad interpreter: No such ...

  7. python3.2 + PyQt4界面开发hello world

    需要先安装python3.2 然后安装python3.2对应的PyQt4界面库版本 import sys from PyQt4 import QtGui , QtCore app = QtGui.QA ...

  8. CCSprite setTextureRect 的坐标的坑

    setTextureRect显示区域所使用的坐标系是跟cocos2d-x的系统坐标系是有区别的,这个坐标系使用的一般屏幕坐标系,也就是以左上角为原点(0,0). Sprite的AnchorPoint对 ...

  9. selinium的ruby版在windows8下安装

    1.安装ruby,当然windows下是最简单的装一个rubyinstaller,官网有.一步到位 2.因为selinium官网被墙,所以改成淘宝的一个资源库 gem sources --remove ...

  10. 关于URL编码

    关于URL编码 作者: 阮一峰 日期: 2010年2月11日 一.问题的由来 URL就是网址,只要上网,就一定会用到. 一般来说,URL只能使用英文字母.阿拉伯数字和某些标点符号,不能使用其他文字和符 ...