生成四则运算题

本节内容的程序会稍复杂。我们让计算机自动生成四则运算题。例如:12 + 56 / 28 - 12.

分析

  1. 我们输出最终的结果是一个字符串,其实就是字符串的拼接。
  2. 本质上就是随机数字与四种符号的随机组合。
  3. 题目的长度可以提前设定好,当然也可随机产生。

以上分析应该没有问题了吧,接下来我们逐步实现。

逐步实现程序

首先我们假定只生成4个数的混合运算。生成随机数的方法我们用过了。我们先来分解一下这个问题,使用函数的思维去解决。 1. 既然是100以内的四则运算,首先要拿到100以内的随机数,于是写一个函数获取100以内的随机数; 2. 四则运算符号也是随机的,于是写一个函数,随机获取运算符; 3. 使用以上的函数,做字符串的拼接。

获取100以内的随机数的函数,由于最终需要字符串相加,返回类型需要转为字符串。

def get_random_num():
    """获取100以内的随机数,不包含0"""
    return str(random.randint(1, 100))

随机获取运算符,注意字符串可以访问单个字符

def get_compute_flag():
    """获取运算符号"""
    index = random.randint(0, 3)  # 生成0到3,作为索引
    return flags[index]

使用两个函数,再编写一个生成一道题的函数。循环获取一个随机数,再获取一个运算符,当循环到最后一次时, 字符串拼接上"=",于是返回整个字符串就是一道四则运算题了。

def get_calculate():
    """获取一道四则运算题"""
    calculate = ""
    for i in range(num_compute):

        num = get_random_num()
        calculate += num

        if i < 3:
            flag = get_compute_flag()
        else:
            flag = "="
        calculate += flag
    return calculate

完整的程序如下:

import random

"""
自动生成100以内的四则混合运算计算题
"""

num_calculate = 5  # 题目个数
num_compute = 4  # 混合运算的个数
num_min, num_max = 1, 100  # 混合运算的数范围
flags = "+-*/"


def get_random_num():
    """获取100以内的随机数,不包含0"""
    return str(random.randint(num_min, num_max))


def get_compute_flag():
    """获取运算符号"""
    index = random.randint(0, 3)  # 生成0到3,作为索引
    return flags[index]


def get_calculate():
    """获取一道四则运算题"""
    calculate = ""
    for i in range(num_compute):

        num = get_random_num()
        calculate += num

        if i < 3:
            flag = get_compute_flag()
        else:
            flag = "="
        calculate += flag
    return calculate


# 打印出题目
for i in range(num_calculate):
    print(get_calculate())