单词,或许是一切学生的噩梦,单词让一切家长们成了学生的教导老师,就算是编程小白也对一大堆单词束手无策。所以我今天突发奇想,写了一个记录单词的小程序,虽然没有背单词等使用功能,可是当一个小本本用还是挺好的。
首先,既然是小本本,必须像自己写的一样,可以永久保存。怎么说来,我们需要先了解如何将单词存储来,我最先选择JSON,因为xml我有点受不了。怎们先了解一下JSON的基本用法。
import json #导入JSON库
json.dumps(obj) #将数据编码为JSON格式并返回
json.loads(s) #将JSON的编码格式转成Python格式并返回
json.load(fp) #从文件读取JSON的编码格式转成Python格式并返回
json.dump(obj, fp) #将数据编码为JSON格式并写入文件
然后,我们把它示范一下。
import json
data = {"B站账号" : "CJIAJIAGAME",} #新建一个object
file = open("file.json", "w") #新建一个JSON文件
print(str(data) + json.dumps(data))
json.dump(data, file)
file.close()
运行成果:
============================== RESTART: D:\xxx.py ==============================
{'B站账号': 'CJIAJIAGAME'}{"B\u7ad9\u8d26\u53f7": "CJIAJIAGAME"}
JSON文件:
{"B\u7ad9\u8d26\u53f7": "CJIAJIAGAME"}
大功告成!
首先,我们首先要建立一个类似于操作系统的框架,虽然不是操作系统,但是有那种我们自主选择的气氛。我在这里给大家示范一个框架,您们可以按照这个来修改:
modea = input("请选择模式: 1.XXX,2.XXX...")
if modea == "1":
......
elif modea == "2":
......
else:
......
然后,要开始让程序变得比较人性化了。比如像这个样子:
modeb = input("请选择你要查询中文还是英文")
如果这样的话,就让人有点烦,于是我采用了一种方法,就是像下面这种:
data = {"chinese" : "中文", "中文": "chinese"}
就是像这种单词为意思,意思为单词的这样写一遍,无论用户是写chinese或者是中文,这样始终都可以直接出结果,虽然文件会大点......
可是,这种觉得写起来都别扭的样子怎么写呢?下面的代码可以帮你解决:
data = {}#创建空字典
a = "chinese"
b = "中文"
data[a] = b#{"chinese":"中文"}
data[data[a]] = a#{ "中文": "chinese"}
#注意啦,上面的写法就是data的data里chinese的值,这么说来这还是"chinese",因此达到了别扭的写法
然后,我们要让程序具有读写,修改单词的功能。这就要用到文件的I/O。在这个程序里,似乎只用write()函数和read()函数,一个是写,一个是读。比如像下面这样:
with open("data\\WORDS.json", 'w') as file:
file.write(json.dumps(data))
with open("data\\WORDS.json", "r") as file:
data = json.loads(file.read())
可是,如果写错了怎么办?删!删怎么删?看下面:
a = "chinese"
del data[a]
del data[data[a]]
然后,将这些小知识拼接,整合,形成最终的程序。
import json
import os
print("欢迎使用本单词记录软件!")
while True:
modea = input("请输入模式:1.查询单词 2.新添单词 3.修改单词 4.删除单词 5.退出")
data = {}
with open("data\\WORDS.json", "r") as file:
data = json.loads(file.read())
if(modea == "1"):
word = input("请输入单词或单词对应的意思")
if word in data:
input(word + "对应" + data[word])
os.system("cls")
else:
input("您还没记录呢!")
os.system("cls")
elif(modea == "2"):
print("@@@@@必须要让单词的意思只有一种,否则查找不到!@@@@@")
dataa = input("请输入你要记录的单词或单词的意思")
datab = input("请输入你要记录的单词的意思或单词(与上个相反)")
if dataa not in data:
if datab not in data:
data[dataa] = datab
data[datab] = dataa
with open("data\\WORDS.json", 'w') as file:
file.write(json.dumps(data))
##下面是多余,但我只是怕程序出错。##
with open("data\\WORDS.json", "r") as file:
data = json.loads(file.read())
input("记录成功!")
os.system("cls")
else:
input("已经记录过了!")
os.system("cls")
else:
input("已经记录过了!")
os.system("cls")
elif(modea == "3"):
print("@@@@@必须要让单词的意思只有一种,否则查找不到!@@@@@")
dataa = input("请输入你要修改的单词或单词的意思")
datab = input("请输入你要修改的单词的意思或单词(与上个相反)")
if dataa in data:
data[dataa] = datab
data[datab] = dataa
with open("data\\WORDS.json", 'w') as file:
file.write(json.dumps(data))
##下面是多余,但我只是怕程序出错。##
with open("data\\WORDS.json", "r") as file:
data = json.loads(file.read())
input("记录成功!")
os.system("cls")
else:
print("你没有记录哦!")
elif(modea == "4"):
dataa = input("请输入你要删除的单词或单词的意思")
if dataa in data:
del data[data[dataa]]
del data[dataa]
with open("data\\WORDS.json", 'w') as file:
file.write(json.dumps(data))
with open("data\\WORDS.json", "r") as file:
data = json.loads(file.read())
input("删除成功!")
os.system("cls")
else:
input("你还没有记录!")
os.system("cls")
elif(modea == "5"):
break
else:
print("输错啦!!")
到这里就结束了,如果有心得请竖起那个大拇指,如果程序出现错误可以来私信!
如果要从此程序摘抄代码,请注明出处!
网友评论