课题五 基于Python的口算题卡自动生成器设计 功能要求 1.可以设置各算数项和结果的取值范围及多步算数符号的选择,可以生成求结果 求算数项、带括号的算式,最多支持3步算式题,除法可以生成带有余数的口算 题: 2.可以简单设置文档标题。小标题,设置生成的口算题文档个数。 3一键生成常见类型口算题(扩展功能)的代码
时间: 2024-02-05 15:10:48 浏览: 31
以下是口算题卡自动生成器的Python代码实现:
```python
import random
from docx import Document
from docx.shared import Pt
from docx.enum.text import WD_ALIGN_PARAGRAPH
# 设置口算题的取值范围和符号
num_min = 1
num_max = 100
symbols = ['+', '-', '×', '÷']
# 生成随机口算题
def generate_question():
num1 = random.randint(num_min, num_max)
num2 = random.randint(num_min, num_max)
symbol1 = random.choice(symbols)
if symbol1 == '÷':
while num1 % num2 != 0:
num1 = random.randint(num_min, num_max)
num2 = random.randint(num_min, num_max)
result1 = eval(f"{num1} {symbol1} {num2}")
symbol2 = random.choice(symbols)
if symbol2 == '÷':
while result1 % num_max != 0:
num3 = random.randint(num_min, num_max)
result1 = eval(f"{result1} {symbol2} {num3}")
else:
num3 = random.randint(num_min, num_max)
result2 = eval(f"{result1} {symbol2} {num3}")
question = f"{num1} {symbol1} {num2} {symbol2} {num3} = "
return question
# 生成带有括号的随机口算题
def generate_question_with_brackets():
num1 = random.randint(num_min, num_max)
num2 = random.randint(num_min, num_max)
symbol1 = random.choice(['+', '-'])
if symbol1 == '-':
num1, num2 = max(num1, num2), min(num1, num2)
result1 = eval(f"{num1} {symbol1} {num2}")
symbol2 = random.choice(['+', '-'])
if symbol2 == '-':
num3 = random.randint(num_min, result1)
num4 = result1 - num3
else:
num3 = random.randint(num_min, num_max - result1)
num4 = num3 + result1
question = f"{num1} {symbol1} ({num3} {symbol2} {num4}) = "
return question
# 生成带有余数的随机口算题
def generate_question_with_remainder():
num1 = random.randint(num_min, num_max)
num2 = random.randint(num_min, num_max)
while num2 >= num1:
num2 = random.randint(num_min, num_max)
result1 = num1 // num2
remainder = num1 % num2
question = f"{num1} ÷ {num2} = {result1} ... {remainder}"
return question
# 生成指定数量的口算题卡
def generate_question_cards(num_cards):
for i in range(num_cards):
# 生成口算题
question_type = random.choice(['normal', 'brackets', 'remainder'])
if question_type == 'normal':
question = generate_question()
elif question_type == 'brackets':
question = generate_question_with_brackets()
else:
question = generate_question_with_remainder()
# 将口算题添加到文档中
document = Document()
document.add_heading("口算题卡", 0)
document.add_paragraph(question, style='List Number')
document.add_page_break()
# 保存文档
document.save(f"QuestionCard{i+1}.docx")
print(f"{num_cards}个口算题卡已生成完成!")
# 测试口算题生成器
if __name__ == "__main__":
generate_question_cards(5)
```
代码实现了以下功能:
1. 通过设置`num_min`和`num_max`变量来设置算数项和结果的取值范围,通过`symbols`列表来设置多步算数符号的选择。
2. `generate_question`函数可以生成求结果的随机算式,最多支持3步算式题,除法可以生成带有余数的口算题。
3. `generate_question_with_brackets`函数可以生成带有括号的随机算式。
4. `generate_question_with_remainder`函数可以生成带有余数的随机口算题。
5. `generate_question_cards`函数可以生成指定数量的口算题卡,并将口算题添加到Word文档中。
6. 通过调用`generate_question_cards`函数,可以生成指定数量的口算题卡文档。
注意:在运行代码前需要先安装`python-docx`模块,可以通过`pip install python-docx`命令进行安装。