我不知道该如何更改此代码。有谁知道为什么它一直给我相同的类型错误,我尝试过有/没有 str() 并使用返回



这是我一直得到的错误:回溯(最近一次调用):文件"C:UsersbarisPycharmProjectspythonProject2main.py",第60行打印(my_hand)TypeError:str返回的非字符串(类型NoneType)

这是完整的代码,但我遇到的问题是,它没有添加任何到my_hand。有人知道为什么吗?:

class Card(object):
RANKS = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"]
SUITS = ["D", "S", "H", "C"]
def __init__(self, rank, suit):
self.rank = rank
self.suit = suit
def __str__(self):
rep = self.rank + self.suit
return str(rep)

class Hand(object):
"""a hand of playing cards"""
def __init__(self):
self.cards = []
def __str__(self):
if self.cards:
rep = ""
for card in self.cards:
rep += str(card) + "  "
else:
rep = "<empty>"
return rep
def clear(self):
self.cards = []
def add(self, card):
self.cards.append(card)
def give(self, card, other_hand):
self.cards.remove(card)
other_hand.add(card)

card1 = Card(rank="A", suit="c")
print(card1)
card2 = Card(rank="2", suit="c")
card3 = Card(rank="3", suit="c")
card4 = Card(rank="4", suit="c")
card5 = Card(rank="5", suit="c")
print(card2)
print(card3)
print(card4)
print(card5)
my_hand = Hand()
print("my hand before i add cardsn", my_hand)
my_hand.add(card1)
my_hand.add(card2)
my_hand.add(card3)
my_hand.add(card4)
my_hand.add(card5)
print("my hand after adding 5 cards: ")
print(my_hand)
your_hand = Hand()
my_hand.give(card1, your_hand)
my_hand.give(card2, your_hand)
print("your hand: ")
print(your_hand)
print("my hand: ")
print(my_hand)
my_hand.clear()
print("my hand now: ")
print(my_hand)

Hand__str__函数中,当self.cards有任何内容时,您没有返回rep,因此代码只是落到函数的末尾。在循环后添加return rep应该可以修复它。

相关内容

最新更新