practice_code/python/code/englishstudy.py

255 lines
7.5 KiB
Python
Raw Permalink Normal View History

2024-04-06 14:38:23 +08:00
import random
import time
import pymysql
import re
host = '121.4.180.183' # 连接名称默认127.0.0.1
user = 'study' # 用户名
passwd = 'Bu!&Cre6h@pR%S' # 密码
port = 3306 # 端口默认为3306
db = 'study' # 数据库名称
charset = 'utf8mb4' # 字符编码
quantity = 20
def test_link():
try:
# 连接数据库
conn = pymysql.connect(host=host, user=user, passwd=passwd, port=port, db=db, charset=charset)
# 连接成功
print("Connected to MySQL database successfully!")
# 可以在此处执行数据库操作
# 关闭连接
conn.close()
except pymysql.Error as e:
# 连接失败,打印异常信息
print("Failed to connect to MySQL database:", e)
time.sleep(3)
exit(1)
def detection_work_day():
conn = pymysql.connect(host=host, user=user, passwd=passwd, port=port, db=db, charset=charset)
cursor = conn.cursor()
cursor.execute('delete from Mistake WHERE Date != CURDATE();')
cursor.execute('SELECT Date FROM Mistake WHERE Date = CURDATE();')
rows = cursor.fetchall()
2024-04-06 19:52:02 +08:00
if len(rows) < quantity:
cursor.execute('SELECT English,Chinese FROM Work where frequency = 0;')
2024-04-06 14:38:23 +08:00
work = cursor.fetchall()
2024-04-06 19:52:02 +08:00
i = 0
works = []
while i < (quantity - len(rows)):
2024-04-06 14:38:23 +08:00
test = random.choice(work)
2024-04-06 19:52:02 +08:00
if test[0] not in works:
English = test[0]
Chinese = test[1]
works.append(English)
2024-04-07 13:54:31 +08:00
cursor.execute('insert into Mistake(English, Chinese)\n'
f"values ('{English}','{Chinese}')")
2024-04-06 19:52:02 +08:00
cursor.execute(f"update Work set frequency = frequency+1 where English='{English}'")
conn.commit()
i += 1
2024-04-06 14:38:23 +08:00
cursor.close()
conn.close()
def add_error(english):
conn = pymysql.connect(host=host, user=user, passwd=passwd, port=port, db=db, charset=charset)
cursor = conn.cursor()
2024-04-06 19:52:02 +08:00
cursor.execute(f"update Work set erred = erred+1 where English='{english}'")
2024-04-06 14:38:23 +08:00
conn.commit()
cursor.close()
conn.close()
def read_work_day():
conn = pymysql.connect(host=host, user=user, passwd=passwd, port=port, db=db, charset=charset)
cursor = conn.cursor()
cursor.execute('SELECT English, Chinese FROM Mistake WHERE Date = CURDATE();')
rows = cursor.fetchall()
cursor.close()
conn.close()
return rows
def study_day(work_day):
i = 0
while i < quantity:
print("-" * 20)
print(f"{i + 1}")
print("English\t:\t" + work_day[i][0])
print("Chinese\t:\t" + work_day[i][1])
print("-" * 20)
j = 0
while j < 3:
english = input("请输入单词:")
chinese = input("请输入意思:")
if english == work_day[i][0] and chinese == work_day[i][1]:
print("输入正确")
j += 1
else:
if english != work_day[i][0]:
print("单词输入错误")
if chinese != work_day[i][1]:
print("意思输入错误")
j = 0
print(f"\n还需要输入{3 - j}")
i += 1
def detection_day(work_day):
for i in range(quantity):
pick = random.randint(1, 2)
if pick == 1:
print("-" * 20)
print(f"{i + 1}")
print("English\t:\t" + work_day[i][0])
print("-" * 20)
Chinese = input("请输入意思:")
if Chinese == work_day[i][1]:
print("恭喜你答对了")
else:
print(f"正确答案应该是\t{work_day[i][1]}")
add_error(work_day[i][0])
else:
print("-" * 20)
print(f"{i + 1}")
print("Chinese\t:\t" + work_day[i][1])
print("-" * 20)
English = input("请输入单词:")
if English == work_day[i][0]:
print("恭喜你答对了")
else:
print(f"正确答案应该是\t{work_day[i][0]}")
add_error(work_day[i][0])
i += 1
def detection_random():
conn = pymysql.connect(host=host, user=user, passwd=passwd, port=port, db=db, charset=charset)
cursor = conn.cursor()
cursor.execute('select English,Chinese from Work')
rows = cursor.fetchall()
works = []
for _ in range(quantity):
works.append(random.choice(rows))
cursor.close()
conn.close()
detection_day(works)
def revise_work():
conn = pymysql.connect(host=host, user=user, passwd=passwd, port=port, db=db, charset=charset)
chines_pick = re.compile(r'^[\u4e00-\u9fa5]+$')
english_pick = re.compile(r'^[a-zA-Z]+$')
number_pick = re.compile(r'^[0-9]+$')
cursor = conn.cursor()
print("\n1.增加单词")
print('2.删除单词')
2024-04-06 20:30:44 +08:00
print('3.查询单词')
2024-04-06 14:38:23 +08:00
pick = input("请输入:")
match pick:
case '1':
English = input("请输入单词:")
while not bool(english_pick.fullmatch(English)):
English = input("请输入单词:")
Chinese = input("请输入意思:")
while not bool(chines_pick.fullmatch(Chinese)):
Chinese = input("请输入意思:")
try:
2024-04-06 20:30:44 +08:00
cursor.execute('insert into Work(english, chinese)\n'
f"values('{English}','{Chinese}')")
2024-04-06 14:38:23 +08:00
except:
2024-04-06 20:30:44 +08:00
cursor.execute(f"select English ,chinese from Work where English='{English}';")
2024-04-06 14:38:23 +08:00
data = cursor.fetchall()
if len(data) == 0:
print("\n未知错误\n")
else:
print("\n数据已经存在")
data = data[0]
print(f"English:{data[0]}")
2024-04-06 20:30:44 +08:00
print(f"Chinese:{data[1]}\n")
2024-04-06 14:38:23 +08:00
else:
conn.commit()
2024-04-06 20:42:28 +08:00
print(f"\n添加成功 values('{English}','{Chinese}')\n")
2024-04-06 14:38:23 +08:00
case '2':
English = input("请输入单词:")
while not bool(english_pick.fullmatch(English)):
English = input("请输入单词:")
cursor.execute(f"select English from Work where English='{English}';")
data = cursor.fetchall()
if len(data) == 0:
print("\n没有查到此单词\n")
else:
cursor.execute(f"delete from Work where English='{English}';")
conn.commit()
print(f"\n{English}删除成功\n")
case '3':
English = input("请输入单词:")
while not bool(english_pick.fullmatch(English)):
English = input("请输入单词:")
2024-04-06 20:30:44 +08:00
cursor.execute(f"select English ,chinese from Work where English='{English}';")
2024-04-06 14:38:23 +08:00
data = cursor.fetchall()
if len(data) == 0:
print("\n没有查到此单词\n")
else:
for work in data:
print(f"\nEnglish:{work[0]}")
2024-04-06 20:30:44 +08:00
print(f"Chinese:{work[1]}\n")
2024-04-06 14:38:23 +08:00
cursor.close()
conn.close()
test_link()
detection_work_day()
work_day = read_work_day()
pick = 0
while pick != 'exit':
print("1.每日学习")
print("2.每日检测")
print("3.随机检测")
print("4.修改单词")
print('exit 退出')
pick = input("请输入需要进入的模式:")
match pick:
case '1':
study_day(work_day)
case '2':
detection_day(work_day)
case '3':
detection_random()
case '4':
revise_work()