zoukankan      html  css  js  c++  java
  • Python 24点(2)

     1 from random import randint
     2 from itertools import permutations
     3 #4个数组和3个运算符可能组成的表达式形式
     4 exps = ('((%s %s %s) %s %s) %s %s',
     5         '(%s %s %s) %s (%s %s %s)',
     6         '(%s %s (%s %s %s) %s %s',
     7         '%s %s ((%s %s %s) %s %s)',
     8         '%s %s (%s %s (%s %s %s))')
     9 ops = '+-*/'
    10 
    11 def compose_24(v):
    12     result = []
    13     #函数的嵌套定义
    14     def check(exp):
    15         try:#有可能会出现除0异常
    16             return int(eval(exp)) == 24#计算字符串中有效的表达式,并返回结果
    17         except:
    18             return False
    19     #全排列
    20     # permutation()连续返回由 iterable 元素生成长度为 r 的排列
    21     #如果 r 未指定或为 None ,r 默认设置为 iterable 的长度,这种情况下,生成所有全长排列。
    22     for a in permutations(v):
    23         t = [exp % (a[0], op1, a[1], op2, a[2], op3, a[3]) for op1
    24              in ops for op2 in ops for op3 in ops for exp in exps if
    25              check(exp % (a[0], op1, a[1], op2, a[2], op3, a[3]))]
    26         if t:
    27             result.append(t)
    28     return result
    29 
    30 card1, card2, card3, card4 = map(int, input('请输入四个扑克牌的大小: ').split(' '))
    31 lst = [card1, card2, card3, card4]
    32 r = compose_24(lst)
    33 if r:
    34      print(r)
    35 else:
    36      print('No answer for ', lst)
  • 相关阅读:
    python计算机基础
    计算机基础知识
    ftok函数
    可重入函数与不可重入函数
    Redis学习资料整理
    小记6月18
    libxml2简单的生成、解析操作
    切换日志是否更新检查点?
    第五课 数据备份恢复实验
    第四课 Grid Control实验 GC Agent安装(第一台机器部署) 及卸载
  • 原文地址:https://www.cnblogs.com/letianpaiai/p/13832588.html
Copyright © 2011-2022 走看看