问题是: 对于扑克牌游戏,我希望能够有效地比较多个变量。 这是代码的主体,必须从值最高的那张开始输入五张牌(ace=1,king=13):
print("*********")
print("P O K E R")
print("*********")
print("Type in your cards starting from the highest value: ")
print()
#values going from 1 (ace) to 13 (king) and suits: 1 (spades), 2 (hearts), 3 (diamonds) and 4 (clubs)
value1 = int(input("1. Value: "))
suit1 = int(input("1. Suit: "))
value2 = int(input("2. Value: "))
suit2 = int(input("2. Suit: "))
value3 = int(input("3. Value: "))
suit3 = int(input("3. Suit: "))
value4 = int(input("4. Value: "))
suit4 = int(input("4. Suit: "))
value5 = int(input("5. Value: "))
suit5 = int(input("5. Suit: "))
我使用if
语句来评估扑克牌并确定它们的ranking。对我来说,这似乎是最简单的方法。评估的一个例子是:
此代码检查5个组合中的1个是否为真。这既低效又费时。当我想进一步编码“三种一种”、“两对”和“一对”选项时,组合会变大。有没有办法缩短if
语句?在
我的方法是先按大小(4,7,9,12,13)对卡片进行排序,然后编写checkPairs()、checkFlush()等函数并将它们应用于它。在
订购汽车将对您有所帮助,因为您可以检查例如您是否有两张价值相同的卡。。他们将是神圣的
或者冲一冲
^{pr2}$与其创建大量的
if/elif
分支,不如考虑构建所有扑克组合的完整列表,并使用该列表将拉手与预先构建的列表进行比较。5张扑克牌手牌组合的数量约为260万张。这包括130万张高的卡片组合,你可以从预先构建的列表中排除这些组合,并在没有其他匹配项时使用“回退”检查。在查看此网站http://people.math.sfu.ca/~alspach/comp18/
你为什么不用?我认为随着你的发展,改变你的项目会容易得多。我在这里做了一些事情-没有经过充分测试,但它应该会给你一个想法:
注:这是Python2.7,如果你需要的话,我会把它转换成Python3
相关问题 更多 >
编程相关推荐