小蟒蛇游戏程序
问题描述:
我是一个python初学者,试着写一个小卡片游戏代码(仅供玩)。规则如下:(1)编号为1-10的4张牌。 (2)必须使用任何数字,且只能使用一次。 (3)只有'+',' - ','*','/'可以在两个数字之间使用 (4)列出所有方法以获得确切数字'24',如果没有办法,没门'。小蟒蛇游戏程序
我写了一些代码,但结果不满意,很多重复的方法和对待'/'错误(5/2应该是2.5不是2)。任何人都可以帮忙
import itertools
def braStr(string1):
return '(' + string1 + ')'
def steps(input,list1 = []):
if len(input)==2:
list1.append(braStr(input[0]+ '+' + input[1]))
list1.append(braStr(input[0]+ '-' + input[1]))
list1.append(braStr(input[0]+ '*' + input[1]))
list1.append(braStr(input[0]+ '/' + input[1]))
else:
for e in itertools.permutations(input):
steps((braStr(e[0]+ '+' + e[1]),) + e[2:],list1)
steps((braStr(e[0]+ '-' + e[1]),) + e[2:],list1)
steps((braStr(e[0]+ '*' + e[1]),) + e[2:],list1)
steps((braStr(e[0]+ '/' + e[1]),) + e[2:],list1)
while True:
cards = raw_input("Please enter the 4 cards: ").split()
if len(cards) != 4:
print "you need 4 cards to begin!"
list1 = []
steps(cards,list1)
result = False
for e in list1:
try:
if eval(e) == 24:
print e + '=', eval(e)
result = True
except:
continue
if result is False:
print 'No way'
答
在Python 2.7中,一个值应该是浮动的。
>>> 5/3
1
>>> 5.0/3
1.6666666666666667
>>> 5/3.0
1.6666666666666667
您可以转换价值浮动单纯的喜欢,
>>> float(5)
5.0
如果你得到重复的结果,追加结果为列表使其具有唯一性,并打印出唯一获得方式24.