本练习应该创建一个制作扑克牌的课程。
在与我(稍微鄙视)的CS教授通电话45分钟后,我不能让这两件事停止发生在这里 1)列表名称(RANKS)绘制此错误 NameError:全局名称' RANKS'未定义
2)卡片名称应该拼写出来(即card1 =(#34; h"应该成为"心灵的王牌")但我一直得到(1) " h")
我不想放弃课程。我需要更直接的帮助。她试图成为一个我欣赏的社交,但我太初学了。我需要学习规则,我无法猜测它们。提前谢谢。
南希class Card(object):
""" creates a playing card
first: lists and dictionaries for program"""
RANKS = ["0", "Ace", "2", "3", "4", "5", "6", "7",
"8", "9", "10", "Jack", "Queen", "King"]
SUITS = {"c":"Clubs", "d":"Diamonds", "h":"Hearts", "s":"Spades"}
def __init__(self, rank, suit): # initializes the process
self.rank = rank
self.suit = suit
def getRank(self): # gets rank of card
if self.rank in RANKS:
RANKS[self.rank] = self.rank
return self.rank
def getSuit(self, SUITS=None): # gets suit of card in a full word
if self.suit in SUITS:
SUITS[self.suit] = self.suit
return self.suit
def __str__(self): # to make the strings to answer the problems
return "Card is %r of %s" % (RANKS[self.rank], SUITS[self.suit])
card1 = Card(1, "h")
print (card1)
card2 = Card(3, "c")
print (card2)
答案 0 :(得分:1)
这里有很多问题。最直接的一个导致你的 错误是因为您已经定义了列表RANKS和字典 在您的Card类中的SUITS,它们必须被称为Card.RANKS 和Card.SUITS,甚至分别来自班级内。
使用简单数字进行排名的想法,用于索引 等级名称列表作为文本,很好。同样,使用一个角色 对于西装和使用它来查找字典是好的。但是方式 你试图在你的getRank()和getSuit()函数中做错了。
getRank()应该取值self.rank并返回元素 该索引的列表 - 所以要查看它是否有效,您需要检查 合法索引值的值,而不是列表值。 其次,RANKS和SUITS值应视为常数, 那么你为什么要在这里改变它们呢?最后,既然你有 no else子句,如果rank值不好,getRank()返回None。
getSuit()有所有这些问题,而且你有一个无用的论点 无缘无故地传递此外,您要检查套装值 针对字典中的可用键,所以“in”是正确的 这样做的方法。
你的 str 函数应该调用getRank()和getSuit()来获取它 他们的错误处理的好处,并可能,你可以 稍后更改实现,并且应该使用%s。
这是一个更好的方法:
class Card(object):
RANKS = ["0", "Ace", "2", "3", "4", "5", "6",
"7", "8", "9", "10", "Jack", "Queen", "King"]
SUITS = {"c":"Clubs", "d":"Diamonds", "h":"Hearts", "s":"Spades"}
def __init__(self, rank, suit):
self.rank = rank
self.suit = suit
def getRank(self): # gets rank of card as text
if self.rank >= 1 and self.rank <= 13:
return Card.RANKS[self.rank]
else:
return "ERROR"
def getSuit(self): # gets suit of card in a full word
if self.suit in Card.SUITS:
return Card.SUITS[self.suit]
else:
return "ERROR"
def __str__(self): # to make the strings to answer the problems
return "Card is %s of %s" % (self.getRank(), self.getSuit())
card1 = Card(1, "h")
print (card1)
card2 = Card(3, "c")
print (card2)
答案 1 :(得分:0)
def getRank(self): # gets rank of card
if self.rank in self.RANKS: #note self.RANKS
return self.RANKS[self.rank]
def getSuit(self, SUITS=None): # gets suit of card in a full word
if self.suit in self.SUITS: #note use of self.SUITS
return self.SUITS[self.suit]
def __str__(self): # to make the strings to answer the problems
#just call the helper methods we defined earlier
return "Card is %s of %s" % (self.getRank(),self.getSuit())