我正在制作一副纸牌,必须完成某些任务。第三项任务要求我比较两张卡片:card1
和card2
。如果1
大于card1
,则该函数应返回card2
;如果2
大于card2
,则card1
或0
如果两张牌都相同西装应该被忽略。输出不正确。对于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)
答案 0 :(得分:1)
'字符串按字典顺序进行比较,不同类型通过其类型名称(“int”&lt;“string”)进行比较。 3.x通过使它们不具有可比性来修复第二点。“基本上你使用数学逻辑比较一个字符串是不行的。
至于如何解决这个问题,我认为你需要重新构建你的套牌。 您可以通过创建一个字典,其中键是套装,值是值。 或者你可以有一个列表列表,其中诉讼是每个列表的名称。但总体而言,您构建代码的方式需要更加面向对象的方法。例如你的牌组是一个附有各种功能的物体,而不是你创造第二个牌组。