Python 创建一个函数,该函数使用卡片列表并生成红色和奇数卡片列表

Python 创建一个函数,该函数使用卡片列表并生成红色和奇数卡片列表,python,class,Python,Class,我必须编写函数red_odd,它消耗一个卡片列表hand,并生成一个红色(即“钻石”或“红心”)的卡片列表,这些卡片具有奇数值,按照它们在消耗列表中出现的顺序排列。无法对已使用列表进行变异 比如说, 红色奇数([card1,card2,card3,card4])=>[card2] 到目前为止,我有一个: class card: 'Fields: suit, value' def __init__(self, suit, value): self.suit = su

我必须编写函数red_odd,它消耗一个卡片列表hand,并生成一个红色(即“钻石”或“红心”)的卡片列表,这些卡片具有奇数值,按照它们在消耗列表中出现的顺序排列。无法对已使用列表进行变异

比如说,

红色奇数([card1,card2,card3,card4])=>[card2]

到目前为止,我有一个:

class card:
    'Fields: suit, value'
    def __init__(self, suit, value):
        self.suit = suit
        self.value = value

card1 = card('spades', 8) 
card2 = card('hearts', 5) 
card3 = card('diamonds', 6) 
card4 = card('clubs', 5)

def red_odd(hand):
    card_list = []
    for c in hand:
        if (c.suit == 'diamonds' or c.suit == 'hearts')  and (c.value / 2 != 0):
            card_list.append(c)
    return card_list

它没有运行,我也不确定哪里出了问题。谢谢您的帮助。

您只需调用您的函数:

odd_red_cards = red_odd([card1,card2,card3,card4])
print(odd_red_cards)
这会给你更多的调试时间


请注意,添加一个
\uuuu str\uuuu
\uuu repr\uuuu
功能可能会很有用,以允许您的卡打印更自然一些,这可能有助于发现其他错误。e、 g:

class card(object):
     ...
     def __repr__(self):
         return '{suit} {value}'.format(suit=self.suit,value=self.value)

你的划分不正确。e、 g.10将显示为
10/2
->
5!=0
。您需要检查模,例如,evens的
10%2==0
<代码>=用于赔率。运行正常;你只是从来没有真正调用过你的函数。虽然你的数学是错误的(你需要
c.value%2
而不是
c.value/2
),但值得一提的是:他需要在他的
卡片
类中有一个
\u str\u
方法来打印任何有用的东西。