JoeJoeJoe
112 天前
直接用 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}")