用 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. openstack trove mongodb配置项

    systemLog.verbosity 组件的默认日志消息详细程度级别. 详细程度级别决定MongoDB输出的信息和调试消息量. 详细级别可以在0到5之间: 0是MongoDB的默认日志详细程度级别, ...

  2. 福州大学2020年春软工实践W班第一次作业

    作业描述 这个作业属于哪个课程 福州大学2020年春软工实践W班 这个作业要求在哪里 寒假作业(1/2) 这个作业的目标 建立博客.回顾,我的初心.当下和未来.学习路线 作业正文 福州大学2020年春 ...

  3. SeetaFaceQt:Qt多线程

    为什么要做多线程,说个最简单的道理就是我们不希望在软件处理数据的时候界面处于无法响应的假死状态.有些处理是灰常花时间的,如果把这样的处理放到主线程中执行,就会导致软件一条路走到底,要等到处理完才能接收 ...

  4. 给rar文件加个自定义头

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  5. Hough直线and圆环变换(如何检测直线、圆环)

    1.霍夫变换 2.cv2.HoughLines() 返回值就是(ρ, θ).ρ 的单位是像素,θ 的单位是弧度.这个函数的第一个参 数是一个二值化图像,所以在进行霍夫变换之前要首先进行二值化,或者进行 ...

  6. 基于libcurl的GET与POST(HTTP1.1)

    #include <stdio.h> #include <curl/curl.h> bool getUrl(char *filename) { CURL *curl; CURL ...

  7. 【@ConfigurationProperties注解】Not Found The requested URL /spring-boot/docs/2.2.2.RELEASE/reference/html/configuration-metadata.html was not found on this server.

    <!-- 配置文件自动映射 --> <dependency> <groupId>org.springframework.boot</groupId> & ...

  8. 吴裕雄--天生自然 JAVA开发学习:Character 类

    char ch = 'a'; // Unicode 字符表示形式 char uniChar = '\u039A'; // 字符数组 char[] charArray ={ 'a', 'b', 'c', ...

  9. 【按位dp】1出现的次数

    l-r1出现的次数 注意端点处理 垃圾算法书 垃圾代码毁我青春 自己研究写了写 #include <iostream> #include <string> #include & ...

  10. 帝国CMS7.5后台美化模板 后台风格修改 帝国CMS后台模板

    都知道帝国CMS功能强悍,生成静态html也非常好用.可是有时候他的后台样式,丑的让你不想用,dede呢,漏洞太多,PHPCMS好看,可是门槛要求高,你会写PHP才行. 帝国CMS后台美化模板:全面美 ...