JoeJoeJoe
64 天前
直接用 ai 生成了一个 python 的:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Author: Joe
# Description: 生成 10000 以内的小学计算题
import random
def generate_operation():
"""生成一个四则运算表达式,保证结果为整数"""
operators = ['+', '-', '*', '÷'] # 将 '/' 替换为 '÷'
# 计算长度 1 到 5 次
count = random.randint(1, 5)
# 减少小数出现的次数,约 30% 的概率为小数
numbers = []
for _ in range(count + 1):
if random.random() < 0.3:
num = round(random.uniform(1, 10000), 2) # 最多保留两位小数
else:
num = random.randint(1, 10000)
numbers.append(num)
ops = [random.choice(operators) for _ in range(count)]
expression = str(numbers[0])
for i in range(count):
while ops[i] == '÷' and numbers[i + 1] == 0: # 修改为 '÷'
if random.random() < 0.3:
numbers[i + 1] = round(random.uniform(1, 10000), 2)
else:
numbers[i + 1] = random.randint(1, 10000)
# 确保除法运算结果为整数
if ops[i] == '÷': # 修改为 '÷'
# 计算商并确保至少为 1
quotient = max(1, int(numbers[i] // numbers[i + 1]))
# 调整被除数使其为除数的整数倍
numbers[i] = numbers[i + 1] * random.randint(1, quotient)
expression += f" {ops[i]} {numbers[i + 1]}"
result = eval(expression.replace('÷', '/')) # 计算时将 '÷' 替换回 '/'
# 确保结果为整数
while isinstance(result, float) and not result.is_integer():
numbers = []
for _ in range(count + 1):
if random.random() < 0.3:
num = round(random.uniform(1, 10000), 2)
else:
num = random.randint(1, 10000)
numbers.append(num)
ops = [random.choice(operators) for _ in range(count)]
expression = str(numbers[0])
for i in range(count):
while ops[i] == '÷' and numbers[i + 1] == 0: # 修改为 '÷'
if random.random() < 0.3:
numbers[i + 1] = round(random.uniform(1, 10000), 2)
else:
numbers[i + 1] = random.randint(1, 10000)
if ops[i] == '÷': # 修改为 '÷'
quotient = max(1, int(numbers[i] // numbers[i + 1]))
numbers[i] = numbers[i + 1] * random.randint(1, quotient)
expression += f" {ops[i]} {numbers[i + 1]}"
result = eval(expression.replace('÷', '/')) # 计算时将 '÷' 替换回 '/'
return expression, int(result)
# 生成题目和结果
expression, result = generate_operation()
# 打印题目
print(f"题目: {expression}")
# 打印结果
print(f"结果: {result}")