python中pickle使用学习-字典小程序函数化

简介:

代码还是有bug
效果:
**欢迎使用光荣之路单词小字典**
1、增加单词 
2、查找单词 
3、删除单词 
4、退出单词 
请选择序列号 *
*****
欢迎下次再次使用**
eter:

===============

# -*- coding:utf-8 -*-
import pickle

WordData = {}

'''菜单兰'''
def WordMenu():
    print u'\t\t\t****欢迎使用光荣之路单词小字典***\t\t\t'
    print u'\t\t\t***       1、增加单词        ***\t\t\t'
    print u'\t\t\t***       2、查找单词        ***\t\t\t'
    print u'\t\t\t***       3、删除单词        ***\t\t\t'
    print u'\t\t\t***       4、退出单词        ***\t\t\t'
    print u'\t\t\t***       请选择序列号       ***\t\t\t'
    print u'\t\t\t*******欢迎下次再次使用**********\t\t\t'

def addWord():
    try:
        yesno = raw_input('Please enter yes and no sure whether to increase the words:')
        if yesno == 'no':
            return
        while True:
            word = raw_input("please input add word:")
            word_meaning = raw_input("Please input word meaning:")
            wr = file("wordData.kpl",'rb')
            WordData = pickle.load(wr)
            if WordData.has_key(word):
                print 'The %s word already exists, do not increase again'%word
                wr.close()
                continue
            ww = file("wordData.kpl",'wb')
            WordData[word] = word_meaning
            pickle.dump(WordData,ww)
            print 'Words updated, thank you for maintenance'
            ww.close()
            break
    except:
        print 'Please first initialize storage file system!!!\n'

def delWord():
    try:
        while True:
            word = raw_input("please input your word to delete:")
            fr = file("wordData.kpl",'rb')
            WordData = pickle.load(fr)
            if WordData.has_key(word):
                print 'You want to delete the word is:',WordData[word]
                del WordData[word]
                print 'Deleted successfully!, please use again!!'
                fr.close()
                continue
            else:
                print 'You want to delete the word does not exist\n'
                break
    except:
        print 'Input is wrong\n'

def FindWord():
    try:
      while True:
          word = raw_input("Please enter to find words:")
          fr = file("wordData.kpl",'rb')
          WordData = pickle.load(fr)
          if WordData.has_key(word):
              print 'You find the word is: %s, the meaning is: %s'%(word,WordData[word])
              continue
          elif word == 'exit':
              break
          else:
              print 'word is not find!'
    except:
        print 'Welcome to use the menu'

#初始化
def MenuInitialize():
    WordData = {'liwen': "李玟"}
    fw = open('wordData.kpl', 'wb')
    # Pickle the list using the highest protocol available.
    pickle.dump(WordData, fw, -1)
    print u'初始化成功!!'

def MenuMain():
    try:
        while True:
           WordMenu()
           num = int(raw_input('eter:\n'))
           if num == 1:
               addWord()
               continue
           elif num == 2:
               FindWord()
               continue
           elif num == 3:
               delWord()
               continue
           else:
               print u"欢迎再次使用"
               break
    except:
        print "Your input is wrong"

if __name__ == "__main__":
    MenuMain() #入口
    #MenuInitialize() #字典初始化









本文转自 知止内明 51CTO博客,原文链接:http://blog.51cto.com/357712148/2049159,如需转载请自行联系原作者
目录
相关文章
|
12天前
|
Python
[oeasy]python086方法_method_函数_function_区别
本文详细解析了Python中方法(method)与函数(function)的区别。通过回顾列表操作如`append`,以及随机模块的使用,介绍了方法作为类的成员需要通过实例调用的特点。对比内建函数如`print`和`input`,它们无需对象即可直接调用。总结指出方法需基于对象调用且包含`self`参数,而函数独立存在无需`self`。最后提供了学习资源链接,方便进一步探索。
50 17
|
18天前
|
人工智能 Python
[oeasy]python083_类_对象_成员方法_method_函数_function_isinstance
本文介绍了Python中类、对象、成员方法及函数的概念。通过超市商品分类的例子,形象地解释了“类型”的概念,如整型(int)和字符串(str)是两种不同的数据类型。整型对象支持数字求和,字符串对象支持拼接。使用`isinstance`函数可以判断对象是否属于特定类型,例如判断变量是否为整型。此外,还探讨了面向对象编程(OOP)与面向过程编程的区别,并简要介绍了`type`和`help`函数的用法。最后总结指出,不同类型的对象有不同的运算和方法,如字符串有`find`和`index`方法,而整型没有。更多内容可参考文末提供的蓝桥、GitHub和Gitee链接。
41 11
|
1月前
|
小程序 Java 关系型数据库
weixin030英语学习交流平台小程序+ssm(文档+源码)_kaic
本文介绍了英语学习交流平台小程序的开发全过程,包括系统分析、设计与实现。该小程序基于Java的SSM框架进行后端管理开发,使用MySQL作为数据库,并借助微信开发者工具确保系统稳定性。小程序设有管理员和用户两个角色,功能涵盖个人中心、每日打卡、学习计划、论坛交流等,具有操作简单、界面清晰、功能齐全的特点。通过技术可行性、经济可行性和操作可行性分析,证明了系统的实用性和高效性,为英语学习者提供了一个便捷的交流平台。
|
2月前
|
C语言 Python
Python学习:内建属性、内建函数的教程
本文介绍了Python中的内建属性和内建函数。内建属性包括`__init__`、`__new__`、`__class__`等,通过`dir()`函数可以查看类的所有内建属性。内建函数如`range`、`map`、`filter`、`reduce`和`sorted`等,分别用于生成序列、映射操作、过滤操作、累积计算和排序。其中,`reduce`在Python 3中需从`functools`模块导入。示例代码展示了这些特性和函数的具体用法及注意事项。
|
2月前
|
Go Python
Python中的round函数详解及使用示例
`round()`函数是Python内置的用于四舍五入数字的工具。它接受一个数字(必需)和可选的小数位数参数,返回最接近的整数或指定精度的浮点数。本文详细介绍其用法、参数及示例,涵盖基本操作、负数处理、特殊情况及应用建议,帮助你更好地理解和运用该函数。
149 2
|
2月前
|
人工智能 数据库连接 开发工具
[oeasy]python069_当前作用域都有些什么_列表dir_函数_builtins
本文介绍了Python中`dir()`函数的使用方法及其作用。`dir()`可以列出当前作用域内的所有变量和成员,类似于`locals()`,但`dir()`不仅限于本地变量,还能显示模块中的所有成员。通过`dir(__builtins__)`可以查看内建模块中的所有内建函数,如`print`、`ord`、`chr`等。此外,还回顾了`try-except-finally`结构在数据库连接中的应用,并解释了为何`print`函数可以直接使用而无需导入,因为它位于`__builtins__`模块中。最后,简要提及了删除`__builtins__.print`的方法及其影响。
56 0
|
2月前
|
开发者 Python
Python入门:8.Python中的函数
### 引言 在编写程序时,函数是一种强大的工具。它们可以将代码逻辑模块化,减少重复代码的编写,并提高程序的可读性和可维护性。无论是初学者还是资深开发者,深入理解函数的使用和设计都是编写高质量代码的基础。本文将从基础概念开始,逐步讲解 Python 中的函数及其高级特性。
Python入门:8.Python中的函数
|
3月前
|
存储 人工智能 Python
[oeasy]python061_如何接收输入_input函数_字符串_str_容器_ 输入输出
本文介绍了Python中如何使用`input()`函数接收用户输入。`input()`函数可以从标准输入流获取字符串,并将其赋值给变量。通过键盘输入的值可以实时赋予变量,实现动态输入。为了更好地理解其用法,文中通过实例演示了如何接收用户输入并存储在变量中,还介绍了`input()`函数的参数`prompt`,用于提供输入提示信息。最后总结了`input()`函数的核心功能及其应用场景。更多内容可参考蓝桥、GitHub和Gitee上的相关教程。
47 0
|
3月前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
50 3
|
3月前
|
JSON 监控 安全
深入理解 Python 的 eval() 函数与空全局字典 {}
`eval()` 函数在 Python 中能将字符串解析为代码并执行,但伴随安全风险,尤其在处理不受信任的输入时。传递空全局字典 {} 可限制其访问内置对象,但仍存隐患。建议通过限制函数和变量、使用沙箱环境、避免复杂表达式、验证输入等提高安全性。更推荐使用 `ast.literal_eval()`、自定义解析器或 JSON 解析等替代方案,以确保代码安全性和可靠性。
104 2

热门文章

最新文章