【发布时间】:2018-05-04 22:38:25
【问题描述】:
这个程序是关于定义一个类Card,它在被叫到时生成一张牌(只有等级,没有花色)。我做的方式与说明不同,所以现在我对这个程序应该如何工作感到非常困惑。
import random
class Card:
def __init__(self):
self.__value = 0
def deal(self):
self.__value(random.randint(1,13))
def set_value(self, value):
self.value = set_face_value
def get_value():
def set_face_value(self):
faces = {1: "Ace", 2: "two", 3: "Three", 4: "Four", 5: "Five", 6: "Six", 7: "Seven", 8: "Eight", 9: "Nine", 10: "Ten", 11: "Jack", 12: "Queen", 13: "King"}
self.face_value = faces[self.value]
def __str__(self):
return self.face_value
我不得不抹去它,因为我仍在试图弄清楚我做错了什么。这是她对我的节目的回应:
import random
class Card:
def __init__(self):
self.value = 0 # THIS SHOULD BE PRIVATE - PUT __ AS THE FIRST
# TWO CHARACTERS IN THE NAME
self.face_value = '' # YOU DO NOT SAVE THIS
# YOU SHOULD HAVE ONLY ONE DATA ATTRIBUTE
def deal(self):
self.set_value(random.randint(1,13))
# THIS METHOD DOES NOT NEED TO CALL "set_value
# IT SHOULD JUST SET THE self.__value ATTRIBUTE
def set_value(self, value):
self.value = value
self.set_face_value() # READ THE ASSIGNMENT - YOU DO NOT HAVE A
# SET FOR THE FACE VALUE
# YOU SHOULD NOT HAVE ANY SUCH METHOD IN YOUR CLASS
def set_face_value(self):
faces = {1: "Ace", 2: "two", 3: "Three", 4: "Four", 5: "Five", 6: "Six", 7: "Seven", 8: "Eight", 9: "Nine", 10: "Ten", 11: "Jack", 12: "Queen", 13: "King"}
self.face_value = faces[self.value]
# YOU SHOULD HAVE A "find_face_value" METHOD THAT RETURNS THE FACE VALUE BASED ON THE VALUE OF THE
# PRIVATE DATA ATTRIBUTE "__value"
# THIS IS NOT CORRECT
def __str__(self):
return self.face_value
这些是她的批评:
- 您将在您的 Card 类中定义一个
deal方法:此方法将处理一张卡片(使用随机数生成器)。 - 您将定义一个
find_face_value方法,该方法将返回卡片对象的面值。您将从程序中删除display_face_value函数。 - 您的
deal_hand函数会将对象列表传递给display_hand函数和hand stats函数,(从Card 类向函数发送5 张卡片)
所以,我的主要问题是执行 deal_hand 并显示 5 手,它会显示如下:
The 5-card hand is:
Jack
Three
Queen
Two
Seven
The average value of your hand is:
7.0
#Also it should display like this
print("Your card is", card)
英语不是我的第一语言,所以我很难理解它真正想要什么。
这是他们要求的数据属性:
Class name: Card
Data attributes: __value
Methods: __init__()
deal()
set_value()
get_value()
find_face_value()
__str__()
【问题讨论】:
-
我得到的主要错误是:第 9 行,在交易中 self.value(random.randint(1,13)) AttributeError: 'Card' object has no attribute 'value'
-
请将您的评论移到您的问题中。这是非常重要的信息。
-
是的,请在您的问题中添加该错误,就像在第一段中一样。您需要说明激励错误是什么,人们对看起来像是发布整个班级定义并说“这不起作用”的事情皱眉 - 这不是你在这里所做的。我还做了一些修改,希望能提高清晰度。
标签: python python-3.x class playing-cards