【发布时间】:2018-03-08 02:36:19
【问题描述】:
我正在为我创建的游戏制作一副牌,并且遇到了重命名我的面卡的问题。所有值为 11-14 的卡片我想在代码中保留它们的值,但向用户显示为 Jack、Queen、King 和 Ace(分别)。使用 str() 和 int() 函数不起作用。使用print().format 不起作用。并且使用匹配类字典不起作用。我无法使映射工作。
相反,当我实例化我的洗牌套牌时,我得到了我的完整套牌加上 4 张额外的面牌(4 张 J,4 张 Q,4 张 K,4 A),但我怀疑这是因为他们没有通过 self.cards。
以下是相关代码:
import random
class Card(object):
def __init__(self, value, suit):
self.value = value
self.suit = suit
def show(self):
print('{} of {}'.format(self.value, self.suit))
class Deck(object):
def __init__(self):
self.cards = []
self.build()
def build(self):
for s in ["Joker"]:
for v in range(1, 3):
self.cards.append(Card(v, s))
for s in ["Spades", "Clubs", "Diamonds", "Hearts"]:
for v in range(2, 15):
if v is 11:
print('{} of {}'.format("Jack", s))
if v is 12:
print('{} of {}'.format("Queen", s))
if v is 13:
print('{} of {}'.format("King", s))
if v is 14:
print('{} of {}'.format("Ace", s))
self.cards.append(Card(v, s))
def show(self):
for c in self.cards:
c.show()
def shuffle(self):
for i in range(len(self.cards)-1, 0, -1):
random.shuffle(self.cards)
def draw(self):
return self.cards.pop()
【问题讨论】:
-
你想把它精确地转换到哪里?
-
在 def build(self) 方法中,因为这是套牌列表所在的位置(两个范围),但我愿意接受建议。
-
你用str函数做了什么?给我一个样品...
-
我在“def build(self):”方法部分的几乎每个部分都使用了 str() 和 int(),但无济于事。例如,当我收到我使用的 replace() 方法需要一个整数的错误时,我对该部分中的所有值都使用了 int()。我还将 str() 包裹在该部分中的每个值周围。
-
嘿,很高兴它对你有用。仅供参考,将答案标记为已接受或有帮助的最佳方法是单击其旁边的复选标记和/或单击向上箭头进行投票(而不是编辑您的原始帖子以标识您选择的解决方案)。欢迎来到 SO。