python&sql-随机问答小程序

随机问答-python&sql

在这里插入图片描述

智力问答测试,在答题过程中对做对、做错进行实时跟踪,测试完成后能根据玩家的答题情况给出成绩。

1. 设计思路

程序使用了一个SQLite试题库test.db,其中每个智力问答山题目、4个选项*1-1正确答案组成(question, Answer -A , Answer-B, Answer-C, Answer-D., right-Answer)。在 测试前,程序从试题库test.db读取试题信息,存储到values列表中。在测试时,顺序从values列表读出题目显示在GUI界面中供用户答题。在进行界面设计时,智力问答题「{是标签控件,4个选项是单选按钮控件,在“一卜一题”按钮单击事件中实现题目切换和对错判断,如果正确则得分score加10分,错误不加分,并判断用户是否做完。在“结果”按钮单击事件中实现得分score的显示。

2. 示例代码

import sqlite3			# 导入SQLite驱动
# 连接到SQLite数据库,数据库文件是test.db
# 如果文件不存在,会自动在当前目录创建:
conn = sqlite3.connect('test2.db')
cursor = conn.cursor()# 创建一个Cursor:
#cursor.execute("delete from exam")
# 执行一条SQL语句,创建exam表:
cursor.execute('CREATE TABLE  if not exists  [exam] ([question] VARCHAR(80)  NULL,[Answer_A] VARCHAR(1)  NULL,[Answer_B] VARCHAR(1)  NULL,[Answer_C] VARCHAR(1)  NULL,[Answer_D] VARCHAR(1)  NULL,[right_Answer] VARCHAR(1)  NULL)')
# 继续执行一条SQL语句,插入一条记录:
cursor.execute("insert into exam (question, Answer_A,Answer_B,Answer_C,Answer_D,right_Answer) values ('哈雷慧星的平均周期为', '54年', '56年', '73年', '83年', 'C')")
cursor.execute("insert into exam (question, Answer_A,Answer_B,Answer_C,Answer_D,right_Answer) values ('夜郎自大中“夜郎”指的是现在哪个地方?', '贵州', '云南', '广西', '福建', 'A')")
cursor.execute("insert into exam (question, Answer_A,Answer_B,Answer_C,Answer_D,right_Answer) values ('在中国历史上是谁发明了麻药', '孙思邈', '华佗', '张仲景', '扁鹊', 'B')")
cursor.execute("insert into exam (question, Answer_A,Answer_B,Answer_C,Answer_D,right_Answer) values ('京剧中花旦是指', '年轻男子', '年轻女子', '年长男子', '年长女子', 'B')")
cursor.execute("insert into exam (question, Answer_A,Answer_B,Answer_C,Answer_D,right_Answer) values ('篮球比赛每队几人?', '4', '5', '6', '7', 'B')")
cursor.execute("insert into exam (question, Answer_A,Answer_B,Answer_C,Answer_D,right_Answer) values ('在天愿作比翼鸟,在地愿为连理枝。讲述的是谁的爱情故事?', '焦钟卿和刘兰芝', '梁山伯与祝英台', '崔莺莺和张生', '杨贵妃和唐明皇', 'D')")
# 通过rowcount获得插入的行数:
print(cursor.rowcount)  #1
# 关闭Cursor:
cursor.close()
# 提交事务:
conn.commit()
# 关闭Connection:
conn.close()

conn = sqlite3.connect('test2.db')
cursor = conn.cursor()
# 执行查询语句:
cursor.execute('select * from exam')
# 获得查询结果集:
values = cursor.fetchall()
print(values)

print('记录数:',len(values))
for k in range(len(values)):
    print(k,values[k][0])
cursor.close()
conn.close()

import tkinter
from tkinter import *
from tkinter.messagebox import *
def callNext():
    global k
    global score
    useranswer=r.get()
    print (r.get())                     #获取被选中单选按钮变量值
    if useranswer==values[k][5]:
        showinfo("恭喜","恭喜你对了!")
        score+=10
    else:
        showinfo("遗憾","遗憾你错了!")    
    k=k+1
    if k>=len(values):
        showinfo("提示","题目做完了")
        return
    #显示下一题
    timu["text"]=values[k][0]
    radio1["text"]=values[k][1]
    radio2["text"]=values[k][2]
    radio3["text"]=values[k][3]
    radio4["text"]=values[k][4]
    r.set('E')
    
def callResult():
    showinfo("你的得分",str(score))


root=tkinter.Tk()
root.title('Python智力问答游戏')
root.geometry("500x200")
r=tkinter.StringVar()						#创建StringVar对象
r.set('E') 							#设置初始值为'E',初始没选中
k=0
score=0
timu=tkinter.Label(root,text=values[k][0])                      #题目
timu.pack()
f1 = Frame(root)						#创建第1个Frame组件
f1.pack()
radio1=tkinter.Radiobutton(f1,variable=r,value='A',text=values[k][1])
radio1.pack()
radio2=tkinter.Radiobutton(f1,variable=r,value='B',text=values[k][2])
radio2.pack()
radio3=tkinter.Radiobutton(f1,variable=r,value='C',text=values[k][3])
radio3.pack()
radio4=tkinter.Radiobutton(f1,variable=r,value='D',text=values[k][4])
radio4.pack()
f2 = Frame(root)						#创建第2个Frame组件
f2.pack()
Button(f2,text = '下一题',command=callNext).pack(side = LEFT)
Button(f2,text = '结  果',command=callResult).pack(side = LEFT)
root.mainloop()

相关推荐

  1. 程序面试问答(解决方案)

    2024-05-10 13:26:04       38 阅读
  2. 程序代码问题随时记录

    2024-05-10 13:26:04       29 阅读
  3. 一个可以自动生成随机区组试验的excel VBA程序2

    2024-05-10 13:26:04       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-10 13:26:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-10 13:26:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-10 13:26:04       87 阅读
  4. Python语言-面向对象

    2024-05-10 13:26:04       96 阅读

热门阅读

  1. Go 使用mqtt

    2024-05-10 13:26:04       32 阅读
  2. 企微SCRM营销:解锁客户关系管理新篇章

    2024-05-10 13:26:04       36 阅读
  3. 自我模拟面试

    2024-05-10 13:26:04       28 阅读
  4. ThinkPHP5.1 验证器

    2024-05-10 13:26:04       34 阅读
  5. 双色球案例【C#】

    2024-05-10 13:26:04       32 阅读
  6. 什么是MTC证书?清关为什么要提交MTC?

    2024-05-10 13:26:04       33 阅读
  7. el-table vxe-table 表格宽度拖拽

    2024-05-10 13:26:04       32 阅读
  8. 高频SQL 确认率

    2024-05-10 13:26:04       39 阅读