函数

时间:2018-05-10 05:37:54

标签: python python-3.x

我在做纸牌游戏。 该类称为Card: 它可以使用deal()方法提供随机值,以显示数字1-13中的随机卡 另一个文件将导入包含Class Card的文件名。它会将该类调用5次,并能够通过将其附加到列表中并将其显示在名为display_hand

的另一个def中来存储它

这是类文件:

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

1 个答案:

答案 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