近期看到一位同事在纸上写写算算,时而长吁短叹,时而搔头抓耳,问了才知道原来是在给家里小孩出两位数加减法作业,数量一大人就烦躁了,听了他的描述,觉得用python容易解决,就写了下面这段小程序:
需求:三个两位数相加减,并且不能出现负数,不能出现超过两位数的情况。
简单解析:有a, b, c三个两位数,分别介于(0,99)之间,它们之间进行加减运算,且存在(a+b)+c和a+(b+c)的情况,也就是控制运算顺序,同时兼顾两不原则,不出现负数,不出现超两位数情况。
首先,构建函数:
def plus_sub(a,b,c):
if a > b and (a-b+c) < 99:
return("({0}-{1})+{2}=".format( a, b, c))
elif b > c and (a+b-c) < 99:
return ("{0}+({1}-{2})=".format(a, b, c))
elif (a-b-c) > 0 and (a-b-c) < 99:
return ("({0}-{1})-{2}=".format(a, b, c))
elif (a + b + c) < 99:
return("{0}+{1}+{2}=".format(a, b, c))
题目中选取了满足条件的几种情况,没有穷尽所有情况,有兴趣的伙伴可以接着往下穷尽。
接着,生成随机数,循环输出:
for i in range(300):
a = rd.randint(10, 99)
b = rd.randint(10, 99)
c = rd.randint(10, 99)
if plus_sub(a, b, c):
print(plus_sub(a, b, c))
得到结果可以轻松复制到word进行打印。
21+(41-37)=
36+(55-46)=
(99-51)+43=
15+(86-30)=
28+(76-56)=
(62-34)+60=
(23-15)+54=
27+(55-53)=
(92-53)+41=
45+(73-47)=
12+(71-10)=
(99-42)+24=
48+(62-16)=
63+(66-36)=
(72-52)+62=
(23-14)+27=
12+(34-11)=
19+(92-38)=
23+25+29=
68+(75-54)=
77+(93-84)=
(55-43)+60=
55+(56-31)=
18+(70-54)=
19+(75-49)=
(17-11)+57=
(96-15)-20=
11+(43-38)=
37+(46-21)=
(80-53)+27=
(32-20)+23=
49+(94-56)=
(88-27)-40=
(77-28)+24=
18+(81-74)=
(13-10)+75=
(72-51)+18=
77+(78-64)=
66+(94-93)=
24+(39-27)=
(81-71)+14=
58+(64-60)=
(87-52)+17=
最后,附上完整代码,留着等小孩上小学了用:
import random as rd
#三个两位数相加减,并且不能出现负数,不能出现超过两位数的情况,兼顾运算顺序
def plus_sub(a,b,c):
if a > b and (a-b+c) < 99:
return("({0}-{1})+{2}=".format( a, b, c))
elif b > c and (a+b-c) < 99:
return ("{0}+({1}-{2})=".format(a, b, c))
elif (a-b-c) > 0 and (a-b-c) < 99:
return ("({0}-{1})-{2}=".format(a, b, c))
elif (a + b + c) < 99:
return("{0}+{1}+{2}=".format(a, b, c))
for i in range(300):
a = rd.randint(10, 99)
b = rd.randint(10, 99)
c = rd.randint(10, 99)
if plus_sub(a, b, c):
print(plus_sub(a, b, c))