 |
|
20
JoeJoeJoe Jul 11, 2025
直接用 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}")
|