编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序

# coidng:utf-8

# 编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性。例如:1 + 2 + 34 – 5 + 67 – 8 + 9 = 100

def f_2():
    L = ['+','-','']
    for i1 in L:
        for i2 in L:
            for i3 in L:
                for i4 in L:
                    for i5 in L:
                        for i6 in L:
                            for i7 in L:
                                for i8 in L:
                                    a = '1%s2%s3%s4%s5%s6%s7%s8%s9'%(i1,i2,i3,i4,i5,i6,i7,i8)
                                    if eval(a)==100:
                                        print(a,'=100')
#------------------------------------------------------------------------------------
from itertools import product
def total_100():
    results,number = [],range(1,10)
    for item in product(['+','-',''],repeat=8):
        number_tuble = zip(number,item + ('',))
        combine = ''.join([str(x)+y for x,y in number_tuble])
        if eval(combine)==100:
            results.append(combine+'=100')
    return results

if __name__ == '__main__':
    #f_2()
    L = total_100()
    for i in L:
        print(i)
运行结果:
1+2+3-4+5+6+78+9=100
1+2+34-5+67-8+9=100
1+23-4+5+6+78-9=100
1+23-4+56+7+8+9=100
12+3+4+5-6-7+89=100
12+3-4+5+67+8+9=100
12-3-4+5-6+7+89=100
123+4-5+67-89=100
123+45-67+8-9=100
123-4-5-6-7+8-9=100
123-45-67+89=100


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值