我在做纸牌游戏。
该类称为Card
:
它可以使用deal()
方法提供随机值,以显示数字1-13中的随机卡
另一个文件将导入包含Class Card的文件名。它会将该类调用5次,并能够通过将其附加到列表中并将其显示在名为display_hand
这是类文件:
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 = value
def get_value(self):
return self.__value
def find_face_value(self):
faces = ['Joker','Ace','Two','Three','Four','Five','Six',
'Seven','Eight','Nine','Ten','Jack','Queen','King']
return faces[self.__value]
def __str__(self):
return self.find_face_value()
程序太大,所以这是调用函数5次的def:
def deal_hand():
# Create an empty list to append the cards.
hand = []
deal_hand = classcard3.Card()
for i in range(5):
#Deal the cards
# Creating an Object
hands = deal_hand.deal()
# The cards show if I use print in here but is not showing
# whenever I use the function to display the values
print('deal', deal_hand)
# add it to the list
hand.append(hands)
return hand
这是显示功能:
def display_hand(hand):
print ("The 5-card hand is: ")
for item in hand:
print(hand)
我没有得到任何错误,只是没有显示除循环内的打印之外的任何内容。如何将其传递到显示屏上以显示卡片? 这是我在循环中使用print函数时唯一显示的内容。我想在外面使用它,我不知道我做错了什么。如果我不能解释得太好,我很抱歉。我是python的初学者,也是这个网站的新手。谢谢
deal Four
deal Three
deal Five
deal Six
deal Queen
答案 0 :(得分:1)
问题是hand.append(hands)
- 您要将None
添加到列表中。 Card.deal()
不会返回任何值,它只会修改__value
属性。但是如果没有其他东西可以返回,Python函数和方法总是返回None
。
因此,当您执行hands = deal_hand.deal()
时,您将None
分配给变量hands
,然后将该值附加到列表hand
。在deal_hand
函数中,使用print显示值,因为您打印了deal_hand
变量(Card
的实例)的值,而不是hands
变量
修改deal_hand
函数可以解决问题:
def deal_hand():
# Create an empty list to append the cards.
hand = []
for i in range(5):
deal_hand = classcard3.Card()
deal_hand.deal()
print('deal', deal_hand)
# add it to the list
hand.append(deal_hand)
return hand