pytion学习1
个人感觉学习一门新语言,简单的语法懂一点足矣。接下来就是编程。读懂别人程序的每一句,理解每一句的意义。
#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的更多相关文章
- 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代
2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...
- Angular2学习笔记(1)
Angular2学习笔记(1) 1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之 ...
- ABP入门系列(1)——学习Abp框架之实操演练
作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...
- 消息队列——RabbitMQ学习笔记
消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- Unity3d学习 制作地形
这周学习了如何在unity中制作地形,就是在一个Terrain的对象上盖几座小山,在山底种几棵树,那就讲一下如何完成上述内容. 1.在新键得项目的游戏的Hierarchy目录中新键一个Terrain对 ...
- 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...
- 菜鸟Python学习笔记第一天:关于一些函数库的使用
2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...
- 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)
前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...
随机推荐
- “cv”: 具有该名称的命名空间不存在
记得添加#include<highgui.h> 无法解析的外部符号 遇到这种问题一般都是由于缺少相应的库文件 右击项目,选择“属性”--“链接器”--“输入”--“附加依赖项” 根据错误中 ...
- git 添加ssh的方法 push免登陆
在github.com上 建立了一个小项目,可是在每次push 的时候,都要输入用户名和密码,很是麻烦 原因是使用了https方式 push 在termail里边 输入 git remote -v ...
- ssd硬盘u盘装win7扩展文件时0x80070570错误
搞了个minisata ssd 硬盘,80G正好,只用来装操作系统. 这个u盘装了很多系统了,没感觉会有什么问题,但在安装过程中出现0x80070570错误.见图 网上有很多方法. 最后的解决方法是: ...
- javascript 中的 delete
那么,为什么我们能删除一个对象的属性: var x = { a: 1 }; delete x.a; // true x.a; // undefined 但却不能删除一个变量: var x = 1; d ...
- import tf
不知道为什么,tensorflow要最后import,否则会对matplotlib的imread产生影响,产生IO错误,异常莫名其妙
- Json.net 忽略实体某些属性的序列化
遇到了一个小问题有一个用户类,结构和数据库一模一样,里面包含用户密码,要向前台返回用户信息的json数据,但是不能输出密码这个字段.之前的做法是 重新又建了一个不包含这个字段的新类,然后深度复制,总感 ...
- UVa 439骑士的移动(BFS)
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- SSD(Single Shot MultiBox Detector)的安装配置和运行
下文图文介绍转自watersink的博文SSD(Single Shot MultiBox Detector)不得不说的那些事. 该方法出自2016年的一篇ECCV的oral paper,SSD: Si ...
- ecshop教程:重置后台密码MD5+salt
ecshop密码加密方式: MD5 32位+salt,简单来说就是明文密码用MD5加密一次,然后在得到的MD5字符后边加上salt字段值(salt值为系统随机生成,生成以后不再改变)再进行一次MD5加 ...
- Oracle 学习之路开始
今年刚毕业,从毕业到现在工作正式工作四个多月了(实习的几个月就不算了).工作之中遇到的困难不少,学到的东西也不少:但是感觉学到的东西还是不够,毕竟java水很深啊. 现在工作中并不是每天都能学到新的东 ...