首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >小蟒蛇纸牌游戏程序

小蟒蛇纸牌游戏程序
EN

Stack Overflow用户
提问于 2016-09-29 01:09:31
回答 1查看 142关注 0票数 0

我是python初学者,试着写一个小的纸牌游戏代码(只是为了玩)。规则如下:(1)4张数字为1-10的卡片。(2)任何号码都必须使用,且只能使用一次。(3)在两个数字之间只能使用'+','-','*','/‘。(4)列出所有获得确切数字'24’的方法,如果没有方法,则打印'no Way‘。

我写了一些代码,但是结果并不令人满意,很多重复的方法和错误的处理(5/2应该是2.5而不是2)。有人能帮上忙吗。

代码语言:javascript
复制
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'
EN

回答 1

Stack Overflow用户

发布于 2016-09-29 20:03:56

在python2.7中,一个值应该是浮点数。

代码语言:javascript
复制
>>> 5/3
1
>>> 5.0/3
1.6666666666666667
>>> 5/3.0
1.6666666666666667

您可以简单地将值转换为浮点数,

代码语言:javascript
复制
>>> float(5)
5.0

如果你在result中获得 result ,将结果追加到a list使其唯一,并打印出获得24的独特方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39753732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档