如何返回两张卡的较高值?

时间:2017-12-08 22:02:01

标签: python-3.x playing-cards

我正在制作一副纸牌,必须完成某些任务。第三项任务要求我比较两张卡片:card1card2。如果1大于card1,则该函数应返回card2;如果2大于card2,则card10如果两张牌都相同西装应该被忽略。输出不正确。对于hand_1,当返回0时返回1。对于hand_2,返回2是正确的。对于hand_3,当返回1时返回2。我的问题是:我该怎么做才能正确返回0,1和2?我提供了整个代码(任务3位于底部)。请注意,我无法更改提供给我的代码,因此我必须使用此代码。

#Task 1
#------

import random

diamonds = ['2♦','3♦','4♦','5♦','6♦','7♦','8♦','9♦','10♦','J♦','Q♦','K♦','A♦']
clubs = ['2♣','3♣','4♣','5♣','6♣','7♣','8♣','9♣','10♣','J♣','Q♣','K♣','A♣']
hearts = ['2♥','3♥','4♥','5♥','6♥','7♥','8♥','9♥','10♥','J♥','Q♥','K♥','A♥']
spades = ['2♠','3♠','4♠','5♠','6♠','7♠','8♠','9♠','10♠','J♠','Q♠','K♠','A♠']

def shuffled_deck():
    """
    Shuffles the deck of cards and returns a shuffled deck.
    """
    deck = diamonds + clubs + hearts + spades
    random.shuffle(deck)
    return deck

deck = shuffled_deck()

if (len(deck) == 52):
    print("You might have created a random deck!")
    print(deck)
else:
    print("Your deck isn't yet complete.")
    print(deck)

#Task 2
#------

def deal_N_cards(deck, N):
    """
    Returns a list of N cards and removes them from the deck.
    """
    return [deck.pop() for k in range(N)]   

deck2 = shuffled_deck()
hand1 = deal_N_cards(deck2, 5)
hand2 = deal_N_cards(deck2, 5)
hand3 = deal_N_cards(deck2, 20)

if (len(hand1) + len(hand2) + len(hand3) + len(deck2) == 52):
    print()
    print("You might have completed task 2!")
    print("hand1:")
    print(hand1)
    print("hand2:")
    print(hand2)
    print("hand3:")
    print(hand3)
    print("deck2:")
    print(deck2)
else:
    print()
    print("Your function isn't yet complete.")
    print("hand1:")
    print(hand1)
    print("hand2:")
    print(hand2)
    print("hand3:")
    print(hand3)
    print("deck2:")
    print(deck2)

#Task 3
#------

def compare_cards(card1, card2):
    """
    Returns 1 if the value of card1 is greater,
    2 if the value of card2 is greater,
    or 0 if the values of both card1 and card2 are equal.
    """
    'A' == 11
    'K' == 10
    'Q' == 10
    'J' == 10
    if card1 > card2:
        return 1
    if card1 < card2:
        return 2
    if card1 == card2:
        return 0

deck3 = shuffled_deck()
hand_1 = compare_cards('4♣', '4♠')
hand_2 = compare_cards('2♠', '6♣')
hand_3 = compare_cards('A♣', 'K♠')

print()
print("You might have completed task 3!")
print("Hand 1:")
print(hand_1)
print("Hand 2:")
print(hand_2)
print("Hand 3:")
print(hand_3)

1 个答案:

答案 0 :(得分:1)

'字符串按字典顺序进行比较,不同类型通过其类型名称(“int”&lt;“string”)进行比较。 3.x通过使它们不具有可比性来修复第二点。“基本上你使用数学逻辑比较一个字符串是不行的。

至于如何解决这个问题,我认为你需要重新构建你的套牌。 您可以通过创建一个字典,其中键是套装,值是值。 或者你可以有一个列表列表,其中诉讼是每个列表的名称。但总体而言,您构建代码的方式需要更加面向对象的方法。例如你的牌组是一个附有各种功能的物体,而不是你创造第二个牌组。