用 post 方法创建的数据会自动产生一个 id (Key ),但有时也常常为了取得这个
id 而让程序难以处理 。 以英汉词典标准版来说,它的数据结构如下:

如果将每条数据都改为{eword:cword }结构,则会让代码更简化。 也就是 id( Key)
就是英文单词,而数据内容( Va lue )就是中文翻译 。 如下 :

要完成这个要求,则需要用到 put 方法 。 例如 : 在 English_adv 节点创建{’agree:同意’}这条数据。

导入程序数据
“ 3. 显示单词”的功能中,加
入了以英文单词由小到大排序的功能 。
def CkeckKey(no):
key_id=""
if datas != None:
for key in datas:
if no==key: # 读取键名
key_id = key
break
return key_id ### 主程序从这里开始 ### from firebase import firebase url = 'https://chiouapp01-74bde.firebaseio.com/English_adv/'
fb = firebase.FirebaseApplication(url, None)
datas=fb.get(url, None) with open('eword_less.csv','r', encoding = 'gbk') as f:
for line in f:
eword,cword = line.rstrip('\n').split(',')
if CkeckKey(eword) == "": # 判断键是否存在
fb.put(url,data=cword,name=eword)
print(eword,":",cword)
print("\n转换完毕!")
def menu():
os.system("cls")
print("英 汉 词 典")
print("-------------------------")
print("1. 翻 译 单 词")
print("2. 输 入 单 词")
print("3. 显 示 单 词")
print("4. 修 改 单 词")
print("5. 删 除 单 词")
print("0. 结 束 程 序")
print("-------------------------") def CkeckKey(no):
key_id=""
if datas != None:
for key,value in datas.items():
if no==key: # 读取键名
key_id = key
break
return key_id def input_data():
global datas
while True:
eword =input("请输入英文单字(Enter==>停止输入)")
if eword=="": break
key_id = CkeckKey(eword)
if key_id != "": # 判断键是否存在
print("{} 单词已存在!".format(datas.get(key_id)))
continue
cword=input("请输入中文翻译:")
fb.put(url, data=cword,name=eword)
time.sleep(2)
if datas == None: datas = dict()
datas[eword]=cword
print(eword,":",cword," 已存储完毕!")
def disp_data():
global datas
datas=fb.get(url, None)
if datas != None:
dc_sort = sorted(datas.items(),key = operator.itemgetter(0))
n,page=0,15
for item in dc_sort:
if n % page ==0:
print("单词\t中文翻译")
print("======================")
key=item[0]
print("{}\t{}".format(key,item[1]))
n+=1
if n == page:
c=input("请按 Enter 显示下一页,Q 键返回主菜单")
if c.upper() == "Q":return
n=0
c=input("请按任意键返回主菜单")
将 datas 字典根据字母进行排序后赋给 dc_sort 列表变茧, key=operator.
itemgetter(O)表示按第 0 个字段( Key 字段)排序。
def search_data():
while True:
eword =input("请输入要翻译的英文单词(Enter==>停止输入)")
if eword=="": break
key_id = CkeckKey(eword)
if key_id != "": # 判断键是否存在
print("中文翻译:{}".format(datas[key_id]))
else:
print("{}单词不存在!\n".format(eword))
input("请按任意键继续翻译…")
def edit_data():
while True:
eword =input("请输入要修改的英文单词(Enter==>停止输入)")
if eword=="": break
key_id = CkeckKey(eword)
if key_id != "": # 判断键是否存在
print("原来中文翻译:{}".format(datas[key_id]))
cword=input("请输入中文翻译:")
datas[key_id]=cword
fb.put(url + '/', data=cword, name=key_id)
time.sleep(2)
print(eword,":",cword," 已修改完毕!\n")
else:
print("{} 单词不存在!\n".format(eword))
把 key_id 的内容赋给 Key, 同时通过 datas[key_i d] =cword 更新 datas
字典中的该条数据。
def delete_data():
while True:
eword =input("请输入要删除的英文单词(Enter==>停止输入)")
if eword=="": break
key_id = CkeckKey(eword)
if key_id != "": # 判断键是否存在
print("确定删除 {} 的数据!".format(datas[key_id]),end="")
yn=input("(Y/N)?")
if (yn=="Y" or yn=="y"):
fb.delete(url + '/' + key_id,None)
datas.pop(key_id)
print("数据删除完毕\n")
else:
print("{} 单词不存在!\n".format(eword))
### 主程序从这里开始 ###

import time,os
from firebase import firebase
import operator url = 'https://chiouapp01-dedce.firebaseio.com/English_adv'
fb = firebase.FirebaseApplication(url, None)
datas=fb.get(url, None) while True:
menu()
choice = input("请输入您的选择:")
try:
choice = int(choice)
print()
if choice==1:
search_data()
elif choice==2:
input_data()
elif choice==3:
disp_data()
elif choice==4:
edit_data()
elif choice==5:
delete_data()
else:
break
except:
print("非常按键!")
time.sleep(1)
print("程序执行完毕!")

吴裕雄--天生自然python学习笔记:python 用firebase实现英汉词典进阶版的更多相关文章

  1. 吴裕雄--天生自然HADOOP学习笔记:hadoop集群实现PageRank算法实验报告

    实验课程名称:大数据处理技术 实验项目名称:hadoop集群实现PageRank算法 实验类型:综合性 实验日期:2018年 6 月4日-6月14日 学生姓名 吴裕雄 学号 15210120331 班 ...

  2. 吴裕雄--天生自然MySQL学习笔记:MySQL UPDATE 更新

    如果需要修改或更新 MySQL 中的数据,我们可以使用 SQL UPDATE 命令来操作. 语法 以下是 UPDATE 命令修改 MySQL 数据表数据的通用 SQL 语法: UPDATE table ...

  3. 吴裕雄--天生自然MySQL学习笔记:MySQL 插入数据

    MySQL 表中使用 INSERT INTO SQL语句来插入数据. 可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据. 以下为向MySQL数据表插入数据通 ...

  4. 吴裕雄--天生自然MySQL学习笔记:MySQL简介

    MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用 ...

  5. 吴裕雄--天生自然 oracle学习笔记:oracle理论学习详解及各种简单操作例子

    1. 数据库的发展过程 层次模型 -->网状模型 -->关系模型 -->对象关系模型 2. 关于数据库的概念 DB:数据库(存储信息的仓库) DBMS:数据库管理系统(用于管理数据库 ...

  6. 吴裕雄--天生自然HADOOP学习笔记:基本环境配置

    实验目的 学习安装Java 学习配置环境变量 学习设置免密码登陆的方法 掌握Linux环境下时间同步的配置 实验原理 1.Java的安装 java是大数据的黄金语言,这和java跨平台的特性是密不可分 ...

  7. 吴裕雄--天生自然HADOOP学习笔记:使用yum安装更新软件

    实验目的 了解yum的原理及配置 学习软件的更新与安装 学习源代码编译安装 实验原理 1.编译安装 前面我们讲到了安装软件的方式,因为linux是开放源码的,我们可以直接获得源码,自己编译安装.例如: ...

  8. 吴裕雄--天生自然HADOOP学习笔记:Shell工具使用

    实验目的 学习使用xshell工具连接Linux服务器 在连上的服务器中进入用户目录 熟悉简单的文件操作命令 实验原理 熟悉shell命令是熟悉使用linux环境进行开发的第一步,我们在linux的交 ...

  9. 吴裕雄--天生自然HTML学习笔记:HTML 布局

    网页布局对改善网站的外观非常重要. 请慎重设计您的网页布局. <!DOCTYPE html> <html> <head>  <meta charset=&qu ...

随机推荐

  1. Day 6:Vector类和实现Hashset以及登录窗口的模拟

    LinkedList作业:生成扑克牌并且洗牌? import java.util.*; class Poker{ String color; String number; public Poker(S ...

  2. UVA - 10118 Free Candies(免费糖果)(dp---记忆化搜索)

    题意:桌上有4堆糖果,每堆有N(N<=40)颗.佳佳有一个最多可以装5颗糖的小篮子.他每次选择一堆糖果,把最顶上的一颗拿到篮子里.如果篮子里有两颗颜色相同的糖果,佳佳就把它们从篮子里拿出来放到自 ...

  3. C++ CreateInstance("ADODB.Connection");创建接口失败的解决方法

    数据库对象mssql2005sp3专业版: 一般数据引用该路径文件#import "c:\\program files\\common files\\system\\ado\\msado15 ...

  4. Mdb文件工具类,UCanAccess使用,Access数据库操作

    ================================ ©Copyright 蕃薯耀 2020-01-09 https://www.cnblogs.com/fanshuyao/ 使用Ocbc ...

  5. SPOJ 247 chocolate (CHOCLO)

    题目http://www.spoj.com/problems/CHOCOLA/ 把一整块巧克力分成一个一个单元,掰断每一横行有个代价值,掰断每个纵行也有个代价值,要你求最后的总代价值最小 这个题目放在 ...

  6. 吴裕雄--天生自然 PHP开发学习:While 循环

    <html> <body> <?php $i=1; while($i<=5) { echo "The number is " . $i . &q ...

  7. SQL基础教程(第2版)第6章 函数、谓词、CASE表达式:6-2 谓词

    ● 谓词就是返回值为真值的函数. ● 可以将子查询作为IN和EXISTS的参数. 本节将会和大家一起学习 SQL 的抽出条件中不可或缺的工具——谓词(predicate).例如, =. <. & ...

  8. 踩一踩win7安装neo4j的坑

    本文使用zip解压方式安装,下载社区版zip 解压到喜欢的文件夹,然后配置环境变量NEO4J_HOME=D:\neo4j-community-3.5.5(自己的解压目录) 配置Path=%NEO4J_ ...

  9. 树上问题&图论模板整理

    去除过水的模板,包括但不限于dijkstra(甚至堆优化都被过滤了).SPFA.kruskal.拓扑排序等. 欧拉回路:http://uoj.ac/problem/117 #include<bi ...

  10. 如何实现MVC ActionResult 返回类型为JavaScriptResult

    必需的js引用文件 <script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>@Scripts ...