生成四则运算题
本节内容的程序会稍复杂。我们让计算机自动生成四则运算题。例如:
12 + 56 / 28 - 12
.
分析
- 我们输出最终的结果是一个字符串,其实就是字符串的拼接。
- 本质上就是随机数字与四种符号的随机组合。
- 题目的长度可以提前设定好,当然也可随机产生。
以上分析应该没有问题了吧,接下来我们逐步实现。
逐步实现程序
首先我们假定只生成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())