最后活跃于 10 months ago

此 Python 程式碼定義了一個 Card 類別,用來表示撲克牌的花色 (suit) 和數字 (number)。該類別包含屬性驗證機制,以確保設定的數值符合撲克牌的標準。此外,程式碼還建立了兩張撲克牌,並透過 assert 來驗證對象的變更是否符合預期,可用於模擬撲克牌遊戲的基礎單元。

修订 192b59d9280b7d7d16b74318825a75392623eef4

bugged_card.py 原始文件
1"""
2撲克牌
3"""
4
5
6class Card: # 類別
7 """
8 撲克牌
9 """
10
11 def __init__(self, suit, number):
12 """
13 建構函式
14 """
15 self._suit = suit
16 self._number = number
17
18 def __repr__(self):
19 return self._number + " of " + self._suit
20
21 @property
22 def suit(self):
23 return self._suit
24
25 @suit.setter
26 def suit(self, suit):
27 # if suit in ["hearts", "clubs", "diamonds", "Spades"]:
28 if suit in ["hearts", "clubs", "diamonds", "spades"]:
29 self._suit = suit
30 else:
31 print("That's not a suit!")
32
33 @property
34 def number(self):
35 return self._number
36
37 @number.setter
38 def number(self, number):
39 if number in [str(n) for n in range(2, 11)] + ["J", "Q", "K", "A"]:
40 # self._number = self._number
41 self._number = number
42 else:
43 print("That's not a valid number")
44
bugged_card_test.py 原始文件
1from bugged_card import Card
2
3# Create two cards
4card1 = Card("hearts", "2")
5card2 = Card("clubs", "A")
6
7# Print out their values
8print(card1)
9print(card2)
10
11# Change the suit of the first card
12card1.suit = "spades"
13
14# ASSERT 1 - check card1 is now spades
15assert card1.suit == "spades"
16
17# Change the number of card 2
18card2.number = "2"
19
20# ASSERT 2 - card1 and card2 should now have the same number
21assert card1.number == card2.number
22