作为一个资深IT民工,立马想到了用代码自动生成题目,这么有规律的要求,人怎么可能比得过机器的速度和精准度?说干就干,一个小时后,出现了如下的代码,运行环境是python3。
import random
string = ""
for day in range(1, 61):
string = string + "\nThis is day " + str(day) + "\n"
#用来记录每天的题目个数
k
= 0
#用来记录每行算术题的个数
num = 0
#取999999是为了保证能够每天生成20道符合要求的题目
for i in range(0, 999999):
if k < 20:
flag = random.choice([" + ", " -
"])
exp = ""
#如果是加号,保证两个数都不超过50,目前学的都是100以内的数
if flag == " + ":
a =
str(random.randint(1, 50)).ljust(2, " ")
b =
str(random.randint(1, 50)).ljust(2, " ")
exp = a +
flag + b + " ="
#如果是减号,保证被减数和减数都小于100即可
else:
a =
random.randint(1, 100)
b =
random.randint(1, 100)
#保证较大的数作为被减数
if a <
b:
tmp = a
a = b
b = tmp
a =
str(a).ljust(2, " ")
b =
str(b).ljust(2, " ")
exp = a +
flag + b + " ="
if num < 3:
string =
string + exp + "
"
num = num
+ 1
#达到4个题目,换行
else:
string =
string + exp + "\n"
num =
0
k = k + 1
#
用来记录每天的题目个数
k
= 0
#定义一个列表,用来存放竖式计算的题目,列表当中的元素是一个长度为2的列表,第一个元素是数啊,第二个元素是符号(+/-)和b
#例如list=[[11, + 22], [33, + 44]]
list = []
#
取999999是为了保证能够每天生成20道符合要求的题目
for i in range(0, 999999):
#每行放置5道竖式计算题,保证竖式计算中的两个数都是两位数,并且加法的时候,两个数都不超过50
if k < 5:
flag = random.choice(["+ ", "- "])
if flag == " + ":
a =
" " + str(random.randint(10,
50)) + " " +
"
"
b = " " +
flag + str(random.randint(10, 50)) + " " +
"
"
else:
a =
random.randint(10, 99)
b =
random.randint(10, 99)
if a <
b:
tmp = a
a = b
b = tmp
#设置特定数量的空格或者tab,是为了保证竖式是对齐的,美观的,可读的
a =
" " + str(a)
+ " " + "
"
b = " " +
flag + str(b) + " " + "
"
list.append([a, b])
k = k + 1
#因为是逐行打印,所以将5道竖式题目中的a,组成单独的一行打印
line1 = list[0][0] + list[1][0] + list[2][0] + list[3][0] +
list[4][0] + "\n"
#
因为是逐行打印,所以将5道竖式题目中的+/-号和b,组成单独的一行打印
line2 = list[0][1] + list[1][1] + list[2][1] + list[3][1] +
list[4][1] + "\n"
#
因为是逐行打印,所以将5道竖式题目中的横线,组成单独的一行打印
ttt = "--------
"
line3 = ttt + ttt + ttt + ttt + ttt + "\n\n"
#打印完横线后,空一行便于孩子写结果
string = string + line1 + line2 + line3
print(string)