首页 > 解决方案 > 如何从导入的类中添加数据

问题描述

我正在上一个初学者编程课程,学习有关 Class 的知识。这是我第一次发帖。我正在尝试从导入的类中添加卡片,但卡片的结果是非类型。我已经在导入的类中创建了每张卡片,但是当卡片附加到卡片组时,它会输出废话。如果格式不令人满意,请道歉,并感谢您的帮助。

class Card:
    def __init__(self,suite,number):
        self.suite=suite
        self.number=number      
    
    def making_cards(suite,number):
        card=[]
        suite=["Clubs","Diamonds","Hearts","Spades"]       
        card_numbers=range(1,14,1)
        number.append("Ace")
        for x in suite:
            for y in card_numbers:
                card=[x, y]
                if isinstance(int(1), int):
                    card_numbers[0]="Ace"
                if isinstance(int(11), int):
                    card_numbers[10]="Jack"
                if isinstance(int(12), int):
                    card_numbers[11]="Queen"
                if isinstance(int(13), int):
                    card_numbers[12]="King"
                return card
        
    def get_display_string(self):
        print number,"of", suite

这是该类正在导入的主程序,不能编辑或修改这部分:

import random
from cards import Card

def create_deck():
    # The deck array-list will contain Cards
    deck = []

    # Build the deck, assuming the Card class was imported correctly
    for i in range(1, 4+1):
        for j in range(1, 13+1):
            deck.append(Card(i,j))

    return deck
def main():
    print ("The dealer opens a new pack of playing cards.")
    my_deck = create_deck()
    print my_deck
    print ("The dealer shuffles.")
    random.shuffle(my_deck)
    print ("The dealer pulls five cards from the top.")
    print ("And we see...")
    for c in my_deck[:5]:
        print ('\t' + c.get_display_string())

if __name__ == "__main__":
    # execute only if run as a script
    main()

废话输出如下: 庄家打开一副新的扑克牌。[<cards.Card instance at 0x00000000051F2648>, <cards.Card instance at 0x00000000051F2FC8>, <cards.Card instance at 0x00000000051F2488>, <cards.Card instance at 0x00000000051F2188>, <cards.Card instance at 0x00000000051F20C8>, <cards.Card实例在0x00000000051F2DC8>,<卡片实例0x0000000000051F2408>,<卡片实例at 0x0000000000051f2148>,<卡片card.Card at 0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000> 200051f2988> card.card实例<cards.Card instance at 0x00000000051EF508>, <cards.Card instance at 0x00000000051EF188>, <cards.Card instance at 0x00000000051EFD08>, <cards.Card instance at 0x00000000051EFC88>, <cards. Card instance at 0x00000000051EE0C8>, <cards.Card instance at 0x00000000051EEA88>, <cards.Card instance at 0x00000000051E2248>, <cards.Card instance at 0x00000000051E20C8>] 庄家洗牌。庄家从顶部抽出五张牌。而我们看到...

标签: pythonoop

解决方案


就像一个“警告”一样,检查你的第一个代码块,making_cards 真的没有意义,我不确定你为什么把它放在 for 中,返回总是在 for 循环的第一次迭代和生病返回 [Ace, Clubs] 等。试着多考虑一下那部分。

现在,关于您在运行时在控制台中看到的内容,我想您会看到类似 <******.Tee object at 0x.................> 的内容。这是因为当您打印时,您打印的是 Card对象,而不是字符串,因此 Python 会执行它的工作并告诉您有关该对象的详细信息。如果要打印,假设套件和号码,您必须在打印中调用这些属性,如下所示:

print(card.suite)
print(card.number)
# or
print("{} {}".format(card.suite, card.number)

此外,您做的一件事是 Card 类的构造函数。再次检查一下,您正在使用 [] 而不是实际值来初始化 self.suite 和 self.number,如果您按照我上面所说的进行打印,Python 将在控制台 [] 上打印并且您会回来说它也在印刷废话。

你走在正确的轨道上,但再想想你在代码中写的东西,因为它并没有真正的意义(而且你肯定因为它而对它的理解更少,而且你对它不工作感到恼火) . 如果这是来自课程,我建议您回到解释类如何工作、返回语句和循环的部分。之后,想想应用程序应该如何工作并在纸上画一些流程图,这可能会帮助你编写代码。


推荐阅读