吴裕雄--天生自然python学习笔记:python 用firebase实现英汉词典进阶版

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

吴裕雄--天生自然python学习笔记:python 用firebase实现英汉词典进阶版

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

吴裕雄--天生自然python学习笔记:python 用firebase实现英汉词典进阶版

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

吴裕雄--天生自然python学习笔记:python 用firebase实现英汉词典进阶版

导入程序数据
“ 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. liunx之:解决liunx下dns配置重启失效的问题

    有时候能ping同ip地址,却ping不通域名,这就是dns没有配置的缘故. 但是DNS配置文件 /etc/resolv.conf 每次重启就会失效. 打开这个配置文件,发现有注释提示: Dynami ...

  2. WPFのInkCanvas作为蒙版透明笔迹不透明

    本人最近利用inkcavas做一个蒙版的功能,结果发现笔迹稀释了,经过一番查找发现:应该讲inkcavas的背景设置为白色,然后透明,而不是将整个控件透明,具体代码: <InkCanvas Na ...

  3. Linux及安全——ELF实践

    Linux及安全——ELF实践  一.分析ELF文件头 二.通过文件头找到section header table,理解内容 三.通过section header table 找到各section 四 ...

  4. 自定义Toast

    简易自定义Toast public class MainActivity extends ListActivity );//边角         gradientDrawable.setGradien ...

  5. DB2错误码解释对照

    表 2. SQLSTATE 类代码 类  代码    含义 要获得子代码,  参阅...  00 完全成功完成 表 3  01 警告 表 4  02 无数据 表 5  07 动态 SQL 错误 表 6 ...

  6. Python内置函数&lpar;10&rpar;——float

    英文文档: class float([x]) Return a floating point number constructed from a number or string x. If the ...

  7. Android获得控件在屏幕中的绝对坐标

    int[] location = new int[2] ; view.getLocationInWindow(location); //获取在当前窗口内的绝对坐标 view.getLocationOn ...

  8. Windows中使用Mysql-Proxy实现Mysql读写分离

    1.简介 读写分离:当业务量上来时,往往一台单机的mysql数据库不能满足性能需求,这时候就需要配置主从库读写分离来解决性能瓶颈.简单的来说,就是原先一台数据库既读又写,现在改成一台写和1台以上读. ...

  9. typescript接口扩展、接口的继承

    //接口扩展:接口可以继承接口 // interface Animal{ // eat():void; // } // interface Person extends Animal{ // work ...

  10. 牛客网-湘潭大学校赛重现H题 (线段树 染色问题)

    链接:https://www.nowcoder.com/acm/contest/105/H来源:牛客网 n个桶按顺序排列,我们用1~n给桶标号.有两种操作: 1 l r c 区间[l,r]中的每个桶中 ...