首先,这是学习Python编码的自我完善练习,因此我可以进行某种程度的测试自动化。创建一个GO FISH游戏。我有一张新的扑克牌,已经洗牌了。
洗牌后的Freshdeck为:['6D','9S','AS','2D','QH','JD','7D','6C','7S','4D', 'JS','9D','8S','9C','AD','2C','8D','QC','KC','10D','QD','KD','JC ”,“ 7C”,“ QS”,“ KS”,“ 10S”,“ KH”,“ AC”,“ 3H”,“ 3D”,“ 10C”,“ 8H”,“ 5C”,“ 2H”, '4C','6H','10H','8C','JH','2S','4S','3C','6S','4H','5S','9H','5D ','7H','3S','AH','5H']
我想为每位玩家分发7张牌,因此我需要从所述列表中弹出最后一张卡,并将其移至每位玩家的新列表中。 (阅读其他地方建议使用握住玩家手牌的字典)。这不是基本问题。无论如何尝试使用append,我似乎都无法获得要存储在new中的最后一个值(第一次迭代时通常是空白列表)。弹出一个值就可以了。我混乱的牌组每次执行都会减小大小,但我失去了空间的最后一个价值。
def create_hand(PN,shuffled_deck):
print("Create Hand Function")
print("Creating Hand of Cards for Player: ",PN)
print("Length of Shuffled Pre-Shuffled Deck is: ",len(shuffled_deck))
print("Pre-Shuffled Freshdeck is:",shuffled_deck)
random.shuffle(shuffled_deck)
print("Post-Shuffled Freshdeck is:",shuffled_deck)
for i in range(1,7,1):
print(f"The {i}th card number will be popped to Player Hand {PN}")
temp=[]
print("Printing Temp ",temp)
print(shuffled_deck)
temp.append(print(shuffled_deck[-1]))
shuffled_deck.pop(-1)
答案 0 :(得分:1)
pop
返回弹出的对象。
所以您要做的就是temp.append(shuffled_deck.pop(-1))
这样,您将弹出对象并将其立即添加到temp。
如果您还想打印它,可以在弹出之前这样做:
print(shuffled_deck[-1])
temp.append(shuffled_deck.pop(-1))
答案 1 :(得分:0)
阅读文档。 print
在这里被滥用;它不返回值。 pop
返回值。
temp.append(print(shuffled_deck[-1])) # Print the value and put a `None` into the player's hand
shuffled_deck.pop(-1) # Remove the value at the end of the list and toss it away.
尝试:
temp.append(shuffled_deck.pop(-1))
为获得更好的程序流程,只需拉开整个手。交易仅仅是人类脆弱的最后一种“随机化”技术。
temp = shuffled_deck[:7]
shuffled_deck = shuffled_deck[7:]