xuanpeng123 发表于 2019-10-24 23:35:23

如何用python编写一个程序随机从题库抽取题目并显示答案?

类似图片上这种界面,点击题目后可以从题库中随机抽取题目显示并给予答题者一定的时间进行回答。
请各位大佬帮帮我,写一个大概的框架出来,感谢~!
学校的活动需要用到,我自己短时间不会写这种程序,希望能得到帮助!

XiaoPaiShen 发表于 2019-10-24 23:35:24

本帖最后由 XiaoPaiShen 于 2019-11-1 11:03 编辑

from tkinter import *
from tkinter import scrolledtext

class GuessGui:
    def __init__(self, title):
      self.root = Tk()
      self.root.title(title)
      self.root.geometry('800x600')            

    def build_menu(self):
      root_menu = Menu(self.root)      

      # intializes a new sub menu in the root menu
      file_menu = Menu(root_menu)
      root_menu.add_cascade(label = "菜单", menu = file_menu)      
      
      file_menu.add_command(label = "显示记分板")
      file_menu.add_command(label = "隐藏记分板")
      file_menu.add_separator()
      file_menu.add_command(label = "退出", command = self.root.quit)

      self.root.config(menu = root_menu)   

   
    def build_timer(self, index):
      
      self.timer = Label(self.root, text='00:00', font=('times', 20), fg='red')
      self.timer.grid(row=index, column=0, columnspan=8)

    def build_content(self, index):
      group1 = LabelFrame(self.root, text='题目', padx=5, pady=5)
      group1.grid(row=index, column=0, columnspan=8, padx=10, pady=10, sticky='ewns')
      
      self.root.rowconfigure(index, weight=1)
      self.root.columnconfigure(0, weight=1)

      group1.rowconfigure(0, weight=1)
      group1.columnconfigure(0, weight=1)
      
      self.content = scrolledtext.ScrolledText(group1)
      self.content.grid(row=0, column=0, sticky='ewns')
      
    def build_buttons(self, index):
               
      self.bu_tixing01 = Button(self.root, text='题型一', width=10)
      self.bu_tixing01.grid(row=index,column=6, padx=10, pady=10, sticky='ew')
      
      self.bu_answer = Button(self.root, text='显示答案', width=10)
      self.bu_answer.grid(row=index,column=7, padx=10, pady=10, sticky='ew')      

      self.bu_tixing02 = Button(self.root, text='题型二', width=10)
      self.bu_tixing02.grid(row=index+1,column=6, padx=10, pady=10, sticky='ew')      
      
      self.bu_assistance = Button(self.root, text='场外援助', width=10)
      self.bu_assistance.grid(row=index+1,column=7, padx=10, pady=10, sticky='ew')      

    def build_gui(self):
      index = 0
      self.build_menu()
      self.build_timer(index)
      self.build_content(index+1)
      self.build_buttons(index+2)   

    def main(self):
      self.root.mainloop()

if __name__ == '__main__':
   
    gui = GuessGui('竞猜游戏')
    gui.build_gui()
    gui.main()      

XiaoPaiShen 发表于 2019-10-25 05:43:53

题库是怎么存的?答案是怎么存的,如何能访问他们?

xuanpeng123 发表于 2019-10-25 14:54:56

XiaoPaiShen 发表于 2019-10-25 05:43
题库是怎么存的?答案是怎么存的,如何能访问他们?

题库是两个txt文档,题目按序号出好,然后每一题的下一行是答案
访问的话我觉得应该不困难,主要是我没掌握这方面的知识,最近又需要改一下这个程序

阴阳神万物主 发表于 2019-10-25 21:32:27

需要显示界面的部分吗

XiaoPaiShen 发表于 2019-10-25 22:46:20

如果程序已经存在,只是修改某些功能就会容易些。完全从头开始就比较繁杂

雨啸青锋 发表于 2019-10-26 01:07:35

这个程序我也在制作中

雨啸青锋 发表于 2019-10-26 09:14:59

XiaoPaiShen 发表于 2019-10-25 05:43
题库是怎么存的?答案是怎么存的,如何能访问他们?

这个简单

xuanpeng123 发表于 2019-10-26 17:19:52

阴阳神万物主 发表于 2019-10-25 21:32
需要显示界面的部分吗

对的,如果题库使用部分也能写好那就好了

xuanpeng123 发表于 2019-10-26 17:23:44

XiaoPaiShen 发表于 2019-10-25 22:46
如果程序已经存在,只是修改某些功能就会容易些。完全从头开始就比较繁杂

对啊,我也这样想,但是学长没留源码下来

阴阳神万物主 发表于 2019-10-26 18:14:20

本帖最后由 阴阳神万物主 于 2019-10-26 20:13 编辑

xuanpeng123 发表于 2019-10-26 17:19
对的,如果题库使用部分也能写好那就好了

那么,可以把每个按钮要达到的效果说一下吗?包括左上角的菜单

_2_ 发表于 2019-10-27 20:35:27

本帖最后由 _2_ 于 2019-10-27 20:37 编辑

xuanpeng123 发表于 2019-10-26 17:23
对啊,我也这样想,但是学长没留源码下来

我找到一个简单的办法:
需要你辛苦一下,把题目和答案放到一个字典里,再把这些字典都放到一个列表里
最后用random模块的choice方法,随机取出一个字典
使用a["question"]和a["answer"]分别获取问题和答案
>>> import random
>>> Q1 = dict(question = "Q",answer = "A")
>>> Q2 = dict(question = "QQ",answer = "AA")
>>> q_bank =
>>> q_bank
[{'question': 'Q', 'answer': 'A'}, {'question': 'QQ', 'answer': 'AA'}]
>>> a = random.choice(q_bank)
>>> a
{'question': 'Q', 'answer': 'A'}
>>> a["question"]
'Q'
>>> a["answer"]
'A'
>>>

_2_ 发表于 2019-10-27 20:38:44

兄dei,看看 11#

python万 发表于 2019-10-29 08:40:49

{:10_256:}

xuanpeng123 发表于 2019-10-30 01:12:16

本帖最后由 xuanpeng123 于 2019-10-30 01:19 编辑

阴阳神万物主 发表于 2019-10-26 18:14
那么,可以把每个按钮要达到的效果说一下吗?包括左上角的菜单

点击题型一,从第一个txt文件里随机取出一道题显示在屏幕上,并且开始倒计时20秒
点击题型二,从第二个txt文件里随机取出一道题显示在屏幕上,并且开始倒计时20秒
点击场外援助,倒计时60s
点击显示答案,屏幕上显示正确答案
左上角的菜单有四个按钮:
1.显示记分板
2.隐藏记分板
3.导入新题库至题型1
4.导入新题库至题型2

记分板还是有用的,3,4功能我看没什么必要,直接建立和文件夹里的txt文件的关系一样可以更换题库。

xuanpeng123 发表于 2019-10-30 01:13:50

_2_ 发表于 2019-10-27 20:38
兄dei,看看 11#

谢谢兄弟,但是我主要是要做一个界面,这个比较重要{:10_266:},因为学校活动要用到,简易代码其实我也会的。。。。

xuanpeng123 发表于 2019-10-30 01:15:20

_2_ 发表于 2019-10-27 20:35
我找到一个简单的办法:
需要你辛苦一下,把题目和答案放到一个字典里,再把这些字典都放到一个列表里 ...

有心了兄弟,谢谢你!!{:10_254:}

xueseng 发表于 2019-10-30 08:26:58

xuanpeng123 发表于 2019-10-25 14:54
题库是两个txt文档,题目按序号出好,然后每一题的下一行是答案
访问的话我觉得应该不困难,主要是我没 ...

建议学一下数据库

阴阳神万物主 发表于 2019-10-30 11:49:04

本帖最后由 阴阳神万物主 于 2019-10-30 12:42 编辑

xuanpeng123 发表于 2019-10-30 01:12
点击题型一,从第一个txt文件里随机取出一道题显示在屏幕上,并且开始倒计时20秒
点击题型二,从第二 ...

那么,倒计时结束以后的处理呢?
场外援助,是时间增加60秒还是变成60秒?

_2_ 发表于 2019-10-30 12:44:02

阴阳神万物主 发表于 2019-10-30 11:49
那么,倒计时结束以后的处理呢?
场外援助,是时间增加60秒还是变成60秒?

用timeit 模块
页: [1] 2 3
查看完整版本: 如何用python编写一个程序随机从题库抽取题目并显示答案?