python 加减法 负数_python解决两位数加减法快速出题问题

71582784ac8ad65edb5ecfa383e191e8.png

近期看到一位同事在纸上写写算算,时而长吁短叹,时而搔头抓耳,问了才知道原来是在给家里小孩出两位数加减法作业,数量一大人就烦躁了,听了他的描述,觉得用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))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值