用 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实现英汉词典进阶版的更多相关文章
-
吴裕雄--天生自然HADOOP学习笔记:hadoop集群实现PageRank算法实验报告
实验课程名称:大数据处理技术 实验项目名称:hadoop集群实现PageRank算法 实验类型:综合性 实验日期:2018年 6 月4日-6月14日 学生姓名 吴裕雄 学号 15210120331 班 ...
-
吴裕雄--天生自然MySQL学习笔记:MySQL UPDATE 更新
如果需要修改或更新 MySQL 中的数据,我们可以使用 SQL UPDATE 命令来操作. 语法 以下是 UPDATE 命令修改 MySQL 数据表数据的通用 SQL 语法: UPDATE table ...
-
吴裕雄--天生自然MySQL学习笔记:MySQL 插入数据
MySQL 表中使用 INSERT INTO SQL语句来插入数据. 可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据. 以下为向MySQL数据表插入数据通 ...
-
吴裕雄--天生自然MySQL学习笔记:MySQL简介
MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用 ...
-
吴裕雄--天生自然 oracle学习笔记:oracle理论学习详解及各种简单操作例子
1. 数据库的发展过程 层次模型 -->网状模型 -->关系模型 -->对象关系模型 2. 关于数据库的概念 DB:数据库(存储信息的仓库) DBMS:数据库管理系统(用于管理数据库 ...
-
吴裕雄--天生自然HADOOP学习笔记:基本环境配置
实验目的 学习安装Java 学习配置环境变量 学习设置免密码登陆的方法 掌握Linux环境下时间同步的配置 实验原理 1.Java的安装 java是大数据的黄金语言,这和java跨平台的特性是密不可分 ...
-
吴裕雄--天生自然HADOOP学习笔记:使用yum安装更新软件
实验目的 了解yum的原理及配置 学习软件的更新与安装 学习源代码编译安装 实验原理 1.编译安装 前面我们讲到了安装软件的方式,因为linux是开放源码的,我们可以直接获得源码,自己编译安装.例如: ...
-
吴裕雄--天生自然HADOOP学习笔记:Shell工具使用
实验目的 学习使用xshell工具连接Linux服务器 在连上的服务器中进入用户目录 熟悉简单的文件操作命令 实验原理 熟悉shell命令是熟悉使用linux环境进行开发的第一步,我们在linux的交 ...
-
吴裕雄--天生自然HTML学习笔记:HTML 布局
网页布局对改善网站的外观非常重要. 请慎重设计您的网页布局. <!DOCTYPE html> <html> <head> <meta charset=&qu ...
随机推荐
-
liunx之:解决liunx下dns配置重启失效的问题
有时候能ping同ip地址,却ping不通域名,这就是dns没有配置的缘故. 但是DNS配置文件 /etc/resolv.conf 每次重启就会失效. 打开这个配置文件,发现有注释提示: Dynami ...
-
WPFのInkCanvas作为蒙版透明笔迹不透明
本人最近利用inkcavas做一个蒙版的功能,结果发现笔迹稀释了,经过一番查找发现:应该讲inkcavas的背景设置为白色,然后透明,而不是将整个控件透明,具体代码: <InkCanvas Na ...
-
Linux及安全——ELF实践
Linux及安全——ELF实践 一.分析ELF文件头 二.通过文件头找到section header table,理解内容 三.通过section header table 找到各section 四 ...
-
自定义Toast
简易自定义Toast public class MainActivity extends ListActivity );//边角 gradientDrawable.setGradien ...
-
DB2错误码解释对照
表 2. SQLSTATE 类代码 类 代码 含义 要获得子代码, 参阅... 00 完全成功完成 表 3 01 警告 表 4 02 无数据 表 5 07 动态 SQL 错误 表 6 ...
-
Python内置函数(10)——float
英文文档: class float([x]) Return a floating point number constructed from a number or string x. If the ...
-
Android获得控件在屏幕中的绝对坐标
int[] location = new int[2] ; view.getLocationInWindow(location); //获取在当前窗口内的绝对坐标 view.getLocationOn ...
-
Windows中使用Mysql-Proxy实现Mysql读写分离
1.简介 读写分离:当业务量上来时,往往一台单机的mysql数据库不能满足性能需求,这时候就需要配置主从库读写分离来解决性能瓶颈.简单的来说,就是原先一台数据库既读又写,现在改成一台写和1台以上读. ...
-
typescript接口扩展、接口的继承
//接口扩展:接口可以继承接口 // interface Animal{ // eat():void; // } // interface Person extends Animal{ // work ...
-
牛客网-湘潭大学校赛重现H题 (线段树 染色问题)
链接:https://www.nowcoder.com/acm/contest/105/H来源:牛客网 n个桶按顺序排列,我们用1~n给桶标号.有两种操作: 1 l r c 区间[l,r]中的每个桶中 ...