02 sqlite數據庫應用(3)——智力問答測試

一、最重要的源碼

1、生成試題庫

import sqlite3
conn = sqlite3.connect('test3.db')
cursor = conn.cursor()

cursor.execute("""create table[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)""")

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','7','6','B')""")
cursor.execute("""insert into exam (question, Answer_A, Answer_B, Answer_C,
                                    Answer_D, right_Answer) values ('在天願作比翼鳥,在地願爲連理枝。講述的是誰的愛情故事?',
                                    '焦仲卿和劉蘭芝','梁山伯與祝英臺','崔鶯鶯與張生','楊貴妃和唐明皇','D')""")



print(cursor.rowcount)
cursor.close()
conn.commit()
conn.close()

1

2、讀取試題信息

conn = sqlite3.connect('test3.db')
cursor = conn.cursor()
cursor.execute('select * from exam')
values = cursor.fetchall()
cursor.close()
conn.close()

3、界面和邏輯設計

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()
r.set('E')

k = 0
score = 0
timu = tkinter.Label(root, text = values[k][0]) # 題目
timu.pack()

創建第一個Frame組件

f1 = Frame(root)
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()

創建第二個Frame組件

f2 = Frame(root)
f2.pack()
Button(f2, text = '下一題', command = callNext).pack(side = LEFT)
Button(f2, text = '結  果', command = callResult).pack(side = LEFT)
root.mainloop()

B
A
B
B
B
B
B

二、改進

1、當輸入錯誤的時候,要提醒而不是報錯

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章