python编程:任意输入4个正整数,编程24点

如题所述

第1个回答  2013-10-23
from __future__ import division

import itertools
n = raw_input('input 4 number sep by comma: 1,2,3,4 -> ')
t = list(itertools.permutations(n.split(','),4))
x = list(itertools.product(* (['+', '-', '*', '/'],) * 3))
for r in t:
for i in x:
if eval(("(((%s%s%s)%s%s)%s%s)") % (r[0],i[0], r[1], i[1], r[2], i[2], r[3])) == 24 :
print ("(((%s%s%s)%s%s)%s%s)=24") % (r[0],i[0], r[1], i[1], r[2], i[2], r[3])

暴力法行么?追问

看不懂〜〜

追答

你一步一步运行,然后print出来变量就看懂了。
输入4个数,
t列表就是他们的全排列。
x就是4则运算,选3个的全排列。
然后用for循环把他们全部列举出来。每个列举就是 (((1 X 2 ) + 3) / 4) 类似的字符串。
然后用eval 把这个式子的值算出来,等于24的话,就打印出来。

本回答被提问者采纳

python编程:任意输入4个正整数,编程24点
print ("(((%s%s%s)%s%s)%s%s)=24") % (r[0],i[0], r[1], i[1], r[2], i[2], r[3])暴力法行么?

Python编24点游戏
\/usr\/bin\/python# coding:utf8'''原始方法编24点游戏'''import itertoolsimport randomnumlist = [random.randint(1, 13) for i in range(4)]# 随机4个数print numlistnlist = [][nlist.append(nl) for nl in list(itertools.permutations(numlist)) if nl not in nlist]# 4个数排列组合,...

跪求c++计算24点的程序,要退学啦,求求啦..5555,帮帮小妹
计算24点:任意输入4位自然数,利用 +、-、*、\/ 四则运算使之得到结果 24 。输出所有不同算法的计算表达式,可为运算优先级而使用括号。注意不要多次输出相同的计算表达式,例如:满足交换率的 +、* 运算之两个操作数换位被认为是相同的计算;两个相等数的 -、\/ 运算只能使用一次;……。a) 说明文档,内容:i. ...

1、 任意输入一个三位的正整数,编程实现判断其是否是水仙花数。x=a3+b...
=EOF) { f=0; for (i=m;i<=n;i++) a[i]=0; for (i=m;i<=n;i++) { j=i%10; k=i\/10%10; l=i\/100; if (i==j*j*j+k*k*k+l*l*l) {a[i]=i; f++;} } b=0; ...

学编程很无聊?13个有趣又好玩的Python游戏代码分享
在编程的世界里,枯燥并非必选项。通过边打游戏边学习编程,不仅能够提高兴趣,还能在实践中熟练技能。下面,我将分享13个有趣的Python游戏代码,让你在快乐中探索编程的乐趣。1、吃金币 源码分享:2、打乒乓 源码分享:3、滑雪 源码分享:4、并夕夕版飞机大战 源码分享:5、打地鼠 源码分享:6、小...

python中求任意输入的正整数以内所有素数的和
P外贴着on中,求任意输入正整数集内的有素数的和,那就是他们来整数和偶数之间来进行他们的相加,得出的结论就是他们说出现的那种结果,并且并且很好的实现

30个Python小游戏,上班摸鱼我能玩一天
10、24点小游戏:通过加减乘除操作达到24。玩法:通过加减乘除操作,小学生都没问题的。源码分享11、平衡木:控制角色在平衡木上行走。玩法:小时候的经典游戏,控制左右就行,到后面才有一点点难度。源码分享12、外星人入侵:模仿经典游戏的外星人入侵。玩法:这让我想起了魂斗罗那第几关的boss,有点...

给1--9 添加运算符号结果=99,用python怎么编程?
1×2+3-4×5+6×7+8×9=99 1×2-3×4+5×6+7+8×9=99 1×2-3×4-5+6×7+8×9=99 1×2×3+4×5-6+7+8×9=99 1×2×3×4×5÷6+7+8×9=99 1÷2÷3×4×5×6+7+8×9=99 不会python,这是用其它语言编程枚举得到的。供参考。

c语言编程 任意输入小于32768的正整数S,从S的个位开始输出每一位数字...
int main(){ int x;printf("请输入一个数:\\n");while(true){ scanf("%d",&x);if(x<32768&&x>0){ while(x >9){ x=x%10;printf("%d,",x);} break;} } system("pause");return 0;}

java 随机输入一个正整数,分别计算0到该数范围内奇数之和和偶数之和...
\/\/从键盘上任意输入 20 个整数,分别计算并显示奇、偶数的和。import java.util.Scanner;public class Test_1{public static void main(String args[]){int[] a=new int[20];int[] b=new int[20];int sum1=0,sum2=0;Scanner sc=new Scanner(System.in);for(int i=0;i<20;i++){...

相似回答