我试图通过创建一个21点游戏来学习OOP的原理,有人可以通过cli来玩。在
我已经成功地设置了一副52张牌,每副牌的数量都是正确的,但是我很难得到玩家的手。在
我已经写过的代码:
import random
class Deck:
def makeCards(self):
self.suits = ['Clubs', 'Diamonds', 'Spades', 'Hearts']
self.rank = ['2','3','4','5','6','7','8','9','10','J','Q','K','A']
for suit in self.suits:
for rank in self.rank:
self.fulldeck = (suit, rank)
self.fulldeck = list(self.fulldeck)
return(self.fulldeck)
def playerHand(self):
self.cardone = random.choice(self.fulldeck)
self.cardtwo = random.choice(self.fulldeck)
print(self.cardone, self.cardtwo)
Deck().makeCards()
Deck().playerHand()
我希望它从self.fulldeck
中定义的卡中随机输出2张卡,但是它给了我
我不明白为什么,因为我已经在makeCards
函数中定义了self.fulldeck
。在
问题的主要部分是您在两个不同的实例上调用方法:
保存对一个实例的引用,然后重用它:
^{pr2}$我也怀疑你会有问题:
您正在迭代一个嵌套循环,但在每次迭代中,您都会重新指派一个全新的
self.fulldeck
,因此只保留最后一个。但是,第一次迭代是最后一次,因为您在它上面return
。当您调用这个函数时,您甚至没有保存它-根本不需要在这里return
。在你可能会想要这样的东西:
{cd4>也可以按如下方式进行修正:
当前版本选择随机卡两次,并替换。使用
random.choice
选择的卡不会从牌堆中移除,因此您可以获得同一张卡两次。使用random.sample
将返回两张随机卡,它们保证不是同一张卡。你可以用这些卡片做任何你喜欢的事情,比如打印它们(print(a.playerHand())
)。在相关问题 更多 >
编程相关推荐