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

#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. CPU标志寄存器

    这个标志寄存器似乎很重要,不干掉它,中断这玩意还进行不下去了,但是过于复杂,都是一些跟计算结果相关的位,头痛 (这是别人写的一篇非常好的关于标志寄存器的文章http://blog.csdn.net/w ...

  2. ubuntu下安装svn服务器

    sudo apt-get install apache2 sudo apt-get install subversion sudo apt-get install libapache2-svn 其次, ...

  3. CSS第一天总结

    CSS是层叠样式表,其作用在我看来就是统一一个或多个元素或者ID.class等的属性,CSS可以定义的属性非常多,一个好看的网页离不开CSS的修饰. CSS简而言之就是三个部分:选择符.属性.属性值. ...

  4. 在 Sublime Text 2 中使用 SFTP 插件快速编辑远程服务器文件

    在 Sublime Text 2 中使用 SFTP 插件快速编辑远程服务器文件 开源程序 浏览:29555 2013年05月02日 文章目录[隐藏] 常见的工作流程 SFTP 安装和使用方法 第一步: ...

  5. Python 基礎 - while流程判斷

    接續上次的代碼,是不是只有執行一次才就結束,想要再繼續猜,就要在執行一次,是不是有點挺麻煩的? 所以這次我們就來再多做一點點功能進去,讓代碼可以多次循環地執行代碼,Go.... 首先,我們先來了解一下 ...

  6. HC蓝牙模块测试AT指令搭建外部电路遇到的问题

    按这个搭,AT指令烧不进去,两块板两次都不行. 这是我的底板(比较混乱的万能版) 第一次短路了,VCC和GND在板子下面连起来了,肉眼当然看不见,吹下来重新焊就好了. 第二次,txdrxd与usb转T ...

  7. PAT (Basic Level) Practise:1038. 统计同成绩学生

    [题目链接] 本题要求读入N名学生的成绩,将获得某一给定分数的学生人数输出. 输入格式: 输入在第1行给出不超过105的正整数N,即学生总人数.随后1行给出N名学生的百分制整数成绩,中间以空格分隔.最 ...

  8. CentOS 6.5设置静态IP教程 并且可以ping通

    CentOS6.5掉电或重启,它的IP会被DHCP重新分配,如果要远程控制这台电脑,不得不去打开显示器去查看它的新IP,这样太麻烦了.于是需要将这台电脑的IP设置成静态的. 网上常规的设置静态ip的方 ...

  9. Android列出所有应用,点击可运行~

    这个东西就比较容易了. MainActivity.class import android.app.Activity; import android.content.Context; import a ...

  10. UVa 439骑士的移动(BFS)

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...