最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Python實現(xiàn)小學生算術(shù)自動出題工具

 更新時間:2025年05月13日 09:47:12   作者:花小姐的春天  
這篇文章主要為大家詳細介紹了使用Python實現(xiàn)小學生算術(shù)自動出題工具,支持四種題型自由組合,自動去重,還能導出帶答案的Word文檔,需要的可以了解下

昨天加完班剛躺下,手機突然"叮咚"一聲。我瞇著眼劃開屏幕,嫂子發(fā)來條59秒的語音:"花花啊,你侄子數(shù)學最近不好,計算題總出錯,想多練練,但每天手寫出題太費時間!從網(wǎng)上找的題目好多都要收費,我手抄了三天實在扛不住了,你們程序員不是會搞什么自動化嗎?幫幫忙??!"

為了挽救嫂子的家庭幸福,也出于對小侄子的關(guān)心,我回復了一個ok,抄起電腦就開始噼里啪啦敲代碼...

代碼比想象中簡單的多

效果圖

先給大伙看最終效果:

支持四種題型自由組合,自動去重,還能導出帶答案的Word文檔,直接打印就能用。

實現(xiàn)思路

核心代碼其實就三大塊:

1. 題目生成器

def generate_question(selected_operations):
    operators = selected_operations
    num1 = random.randint(1, 100)
    num2 = random.randint(1, 100)
    operator = random.choice(operators)
    
    # 確保生成的題目符合條件
    if operator == '+':
        return num1, operator, num2, num1 + num2
    elif operator == '-':
        while num2 > num1:  # 保證減法不為負數(shù)
            num1 ,num2 = num2 ,num1
        return num1, operator, num2, num1 - num2
    elif operator == '*':
        return num1, '×', num2, num1 * num2
    elif operator == '/':
        num1 = random.randint(1, 100) * random.randint(1, 10)  # 確保能整除
        num2 = random.randint(1, 10)
        return num1, '÷', num2, num1 // num2

# 生成題目的函數(shù)
def generate_questions(quantity, selected_operations):
    questions = []
    answers = []
    
    for i in range(quantity):
        num1, operator, num2, answer = generate_question(selected_operations)
        question = f"{num1} {operator} {num2} = "
        questions.append(question)
        answers.append(f"{question} {answer}")
    print(len(questions),len(answers))
    return questions, answers

重點細節(jié):

  • 減法自動交換數(shù)字避免負數(shù)(小學生還沒學負數(shù)呢?。?/li>
  • 除法確保能整除

2. 把題目生成Word

from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.section import WD_SECTION_START

def save_to_word(questions, answers, filename="小學生計算題.docx"):
    doc = Document()
    
    # 添加數(shù)學題目標題
    title = doc.add_heading('數(shù)學題目', 0)
    title.alignment = WD_ALIGN_PARAGRAPH.CENTER

    # 插入"連續(xù)分節(jié)",設置4欄,題目區(qū)域都屬于這一節(jié)
    section = doc.add_section(start_type=WD_SECTION_START.CONTINUOUS)
    sectPr = section._sectPr
    cols = sectPr.xpath('./w:cols')[0]
    cols.set('num', '4')

    # 添加題目內(nèi)容
    for q in questions:
        p = doc.add_paragraph(q)
        p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.LEFT  # 左對齊

    # 插入一個新的頁面,用新節(jié)保持正確格式
    doc.add_page_break()

    # 添加答案標題
    answer_title = doc.add_heading('答案', 0)
    answer_title.alignment = WD_ALIGN_PARAGRAPH.CENTER

    # 插入新的"連續(xù)分節(jié)",設置4欄,答案區(qū)域也屬于這一節(jié)
    section = doc.add_section(start_type=WD_SECTION_START.CONTINUOUS)
    sectPr = section._sectPr
    cols = sectPr.xpath('./w:cols')[0]
    cols.set('num', '4')

    # 添加答案內(nèi)容
    for a in answers:
        p = doc.add_paragraph(a)
        p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.LEFT

    doc.save(filename)

為了給嫂子節(jié)省打印前,這里用了Word的分欄功能,一行四道題目。

3. GUI界面(假裝專業(yè)的操作面板)

import tkinter as tk
from tkinter import messagebox

# GUI界面
def on_generate():
    try:
        quantity = int(entry_quantity.get())
        selected_operations = []
        
        if var_add.get():
            selected_operations.append('+')
        if var_sub.get():
            selected_operations.append('-')
        if var_mul.get():
            selected_operations.append('*')
        if var_div.get():
            selected_operations.append('/')
        
        if not selected_operations:
            selected_operations = 'All'
        
        questions, answers = generate_questions(quantity, selected_operations)
        save_to_word(questions, answers)
        
    except ValueError:
        messagebox.showerror("輸入錯誤", "請輸入有效的題目數(shù)量")

# 創(chuàng)建主窗口
root = tk.Tk()
root.title("小學生出題工具")
root.geometry("400x350")  
root.config(bg="#f5f5f5")  

label_quantity = tk.Label(root, text="請輸入題目數(shù)量:", font=("微軟雅黑", 12), bg="#f5f5f5")
label_quantity.grid(row=0, column=0, padx=20, pady=10, sticky="w")

entry_quantity = tk.Entry(root, font=("微軟雅黑", 12), width=15)
entry_quantity.insert(0, "100")
entry_quantity.grid(row=0, column=1, padx=20, pady=10)

label_operations = tk.Label(root, text="請選擇題目類型:", font=("微軟雅黑", 12), bg="#f5f5f5")
label_operations.grid(row=1, column=0, padx=20, pady=10, sticky="w")

var_add = tk.BooleanVar()
var_sub = tk.BooleanVar()
var_mul = tk.BooleanVar()
var_div = tk.BooleanVar()

check_add = tk.Checkbutton(root, text="加法", variable=var_add, font=("微軟雅黑", 12))
check_add.grid(row=2, column=0, padx=20, sticky="w")

check_sub = tk.Checkbutton(root, text="減法", variable=var_sub, font=("微軟雅黑", 12))
check_sub.grid(row=3, column=0, padx=20, sticky="w")

check_mul = tk.Checkbutton(root, text="乘法", variable=var_mul, font=("微軟雅黑", 12))
check_mul.grid(row=4, column=0, padx=20, sticky="w")

check_div = tk.Checkbutton(root, text="除法", variable=var_div, font=("微軟雅黑", 12))
check_div.grid(row=5, column=0, padx=20, sticky="w")

button_generate = tk.Button(root, text="生成題目", command=on_generate, font=("微軟雅黑", 14), bg="#4CAF50", fg="white")
button_generate.grid(row=6, column=0, columnspan=2, pady=40)

root.mainloop()

設計心得:

  • grid布局比pack更適合這種規(guī)整的界面
  • 默認生成100道題目,小侄子看了更開心

沒想到栽在這些小細節(jié)上

  • 侄子說除不盡的計算題看不懂
  • 減法為什么有負數(shù),我們還沒學負數(shù)
  • 乘號寫成*,除號寫成/結(jié)果被侄子吐槽"和作業(yè)本長得不一樣

最絕的是加了個一鍵導出答案,嫂子現(xiàn)在每天把題目和答案分開打印,侄子做完自己核對,徹底解放家長!

到此這篇關(guān)于使用Python實現(xiàn)小學生算術(shù)自動出題工具的文章就介紹到這了,更多相關(guān)Python自動出題工具內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python編程中類與類的關(guān)系詳解

    Python編程中類與類的關(guān)系詳解

    在本文里小編給大家整理了關(guān)于Python編程中類與類的關(guān)系以及相關(guān)代碼知識點,需要的朋友們可以學習下。
    2019-08-08
  • Python使用wxPython實現(xiàn)計算器

    Python使用wxPython實現(xiàn)計算器

    這篇文章主要為大家詳細介紹了Python使用wxPython實現(xiàn)計算器,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Python計數(shù)器collections.Counter用法詳解

    Python計數(shù)器collections.Counter用法詳解

    本文主要介紹了Python計數(shù)器collections.Counter用法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • Python實現(xiàn)不同樣式二維碼

    Python實現(xiàn)不同樣式二維碼

    作為一名合格的?Python?程序員,在工作中必然會用到二維碼相關(guān)操作,那如何快速的用?Python?實現(xiàn)呢?別著急,咱們這篇博客就為你解決
    2023-01-01
  • selenium WebDriverWait類等待機制的實現(xiàn)

    selenium WebDriverWait類等待機制的實現(xiàn)

    這篇文章主要介紹了selenium WebDriverWait類等待機制的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03
  • Python實現(xiàn)用戶注冊登錄程序

    Python實現(xiàn)用戶注冊登錄程序

    這篇文章主要為大家詳細介紹了Python實現(xiàn)用戶注冊登錄程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • python反反爬蟲技術(shù)限制連續(xù)請求時間處理

    python反反爬蟲技術(shù)限制連續(xù)請求時間處理

    這篇文章主要為大家介紹了python反反爬蟲技術(shù)限制連續(xù)請求時間處理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • 在Django的通用視圖中處理Context的方法

    在Django的通用視圖中處理Context的方法

    這篇文章主要介紹了在Django的通用視圖中處理Context的方法,Django是最具人氣的Python web開發(fā)框架,需要的朋友可以參考下
    2015-07-07
  • 聊聊python dropna()和notnull()的用法區(qū)別

    聊聊python dropna()和notnull()的用法區(qū)別

    這篇文章主要介紹了聊聊python dropna()和notnull()的用法區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Python入門之三角函數(shù)全解【收藏】

    Python入門之三角函數(shù)全解【收藏】

    這篇文章主要介紹了Python入門之三角函數(shù)全解【收藏】,還是比較全面的,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11

最新評論

常山县| 德兴市| 民乐县| 来凤县| 孝感市| 湘潭县| 苏州市| 萨迦县| 集安市| 宁波市| 根河市| 苍南县| 逊克县| 亳州市| 团风县| 怀化市| 菏泽市| 竹溪县| 睢宁县| 油尖旺区| 永安市| 浮梁县| 高平市| 任丘市| 西城区| 湘乡市| 平湖市| 永仁县| 兰考县| 湟源县| 河南省| 武安市| 博兴县| 曲靖市| 林口县| 金昌市| 张家界市| 兰坪| 安吉县| 峨眉山市| 民和|