计算24点的函数

# -*- coding: utf-8 -*-

from itertools import permutations

def math(num1,num2,num3,num4):
    '''计算24点'''
    sign = ['+','-','*','/']
    num = [num1,num2,num3,num4]
    order = list(permutations([0,1,2,3],4)) # 进行数字排列
    for i in sign:
        for j in sign:
            for k in sign:
                for l in order:
                    try:
                        l1 = l[0]
                        l2 = l[1]
                        l3 = l[2]
                        l4 = l[3]
                        #print(l1,l2,l3,l4)
                        # 第一种 (a b) (c d)
                        answer = '(' + str(num[l1]) + i + str(num[l2]) + ')' + j + '(' + str(num[l3]) + k + str(num[l4]) + ')'
                        if eval(answer) == 24:
                            print(answer + "=24")
                        # 第二种 ( ( a b ) c ) d
                        answer = '(' + '(' + str(num[l1]) + i + str(num[l2]) + ')' + j + str(num[l3]) + ')' + k + str(num[l4])
                        if eval(answer) == 24:
                            print(answer + "=24")
                        # 第三种 (a (b c)) d
                        answer = '(' + str(num[l1]) + i + '(' + str(num[l2]) + j + str(numl3) + ')' + ')' + k + str(num[l4])
                        if eval(answer) == 24:
                           print(answer + "=24")
                        # 第四种  a ((b c) d)
                        answer = str(num[l1]) + i + '(' + '(' + str(num[l2]) + j + str(num[l3]) + ')' + k + str(num[l4]) + ')'
                        if eval(answer) == 24:
                           print(answer + "=24")
                        #print(answer + '=' + str(eval(answer)))
                        # 第五种  a (b (c d))
                        answer = str(num1) + i + '(' + str(num2) + j + '(' + str(num3) + k + str(num4) + ')' + ')'
                        if eval(answer) == 24:
                           print(answer + "=24")
                        #print(answer + '=' + str(eval(answer)))
                    except:
                        pass

a = 4
b = 12
c = 13
d = 10

math(a,b,c,d)


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值