好友
阅读权限 10
听众
最后登录 1970-1-1
豆虫
发表于 2024-11-9 12:42
100 吾爱币
[Python] 纯文本查看 复制代码
# -*- coding: UTF-8 -*- //字符编码
import tkinter as tk
import sqlite3
import random
import subprocess
dbname='F:\棋谱类\chess.db'
conn=sqlite3.connect(dbname)
cursor=conn.cursor()
def count():
# 统计未练习数量
cursor.execute("SELECT COUNT(*) FROM shuju WHERE lianxi < ? and cuowu < ?",(3,3))
# 获取结果
rows_count = cursor.fetchone()[0]
print(f"Number of rows: {rows_count}")
return rows_count
def shuji():
# 生成一个随机数
shulian=count()
random.seed(shulian)
num = random.randint(1, shulian) # 随机数
return num
def lianxi():
# 查询没练习的局面
num=shuji()
row=cursor.execute('SELECT id,chengxu,qipu,lianxi, cuowu FROM shuju WHERE id=? and lianxi < ? or cuowu != ?', (num,3,0))
rows=cursor.fetchone()#取第一条记录
print("数据 ",rows[0])
return rows
def nextone():
lujing=lianxi()
# print(lujing[0])
exe = f"{lujing[1]}"
path = f"{lujing[2]}"
subprocess.Popen([exe, path])
def cuowu():
#提交错误局面
num=shuji()
# print(type(num))
# print("随机数",num)
cuo=cursor.execute("UPDATE shuju SET cuowu = cuowu+1 WHERE id=?",(num))
rows = cursor.fetchone() # 取第一条记录
print("当前id",rows[0])
print("错误次数",rows[1])
# 提交事物
conn.commit()
打谱=tk.Tk()
打谱.title("象棋布局记忆辅助")
打谱.geometry('150x150-50+50')
tk.Button(打谱,text='错误',font=('黑体',15),width=8,command=cuowu).place(x=10,y=30)
tk.Button(打谱,text='下一局',font=('黑体',15),width=8,command=nextone).place(x=10,y=100)
打谱.mainloop()
# 关闭连接
cursor.close()
conn.close()
-----------图片显示-----------------------
----------------------问题描述---------------------------------
1,cuo=cursor.execute("UPDATE shuju SET cuowu = cuowu+1 WHERE id=?",(num))
这句SQL代码没写对,报错。
这句代码的意思是执行一次,往shuju表中的cuowu字段的值累加1,默认值是0.
2,随机数问题:
如果加这个random.seed(shulian),如果加上这个,点击下一局和错误,得到的随机数是一样的,但再次点击,随机数不会变.
如果不加random.seed(shulian),两个按钮得到的随机数不相同。
3,要实现功能:
点击下一局,从数据表中随机取出一条数据,如果错误,点击错按钮,往数据表的cuowu字段值累加1,点击正确按钮,往数据表的lianxi字段值累加1(这个功能还没写到)
问题核心,什么让三个或四个按钮同时传入的随机数是同步的,谢谢各位大虾。麻烦花点时间帮忙解决一下。
最佳答案
查看完整内容
index_list = [0]
def shuji():
# 生成一个随机数
shulian=count()
num = random.randint(1, shulian) # 随机数
index_list [0] = num
在用 随机数的时候直接调用 num = index_list[0]就行,这样只要你不再次调用def shuji():函数,
每次获得的随机数都是同一个数
发帖前要善用【论坛搜索 】 功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。