### Lab11-1 ### class Circle: ### Lab11-2 ### class Circle: def __init__(self): # 在此撰寫程式碼 ### Lab11-3 ### class Circle: def __init__(self): self.radius = 0 ### Lab11-4 ### class Circle: def __init__(self): self.radius = 0 def change_radius(self, radius): self.radius = radius ### Lab11-5 ### class Circle: def __init__(self): self.radius = 0 def change_radius(self, radius): self.radius = radius def get_radius(self): return self.radius ### Lab11-6 ### one_circle = Circle() ### Lab11-7 ### one_circle = Circle() another_circle = Circle() one_circle.change_radius(4) print(one_circle.get_radius()) print(another_circle.get_radius()) ### Lab11-8 (ex11-1.py) ### class Rectangle: ''' A rectangle object with a length and a width. length: int object. width: int oject. ''' def __init__(self, length, width): self.length = length self.width = width def set_length(self, length): self.length = length def set_width(self, width): self.width = width ### Lab11-9 ### a_rectangle = Rectangle(2, 4) ### Lab11-10 (ex11-2.py) ### def average(numbers): return sum(numbers) / len(numbers) scores = [85, 95, 98, 87, 80, 92] print(f'平均分數: {average(scores)}') ### Lab11-11 (ex11-3.py) ### class ScoreList: def __init__(self, scores): self.scores = scores def average(self): return sum(self.scores) / len(self.scores) class_score = ScoreList([85, 95, 98, 87, 80, 92]) print(f'平均分數: {class_score.average()}') ### Lab11-12 ### class Stack: def __init__(self): self.stack = [] ### Lab11-13 (ex11-4.py) ### class Stack: def __init__(self): self.stack = [] def get_stack_elements(self): return self.stack.copy() def add_one(self, item): self.stack.append(item) def add_many(self, item, n): for i in range(n): self.stack.append(item) def remove_one(self): self.stack.pop() def remove_many(self, n): for i in range(n): self.stack.pop() def size(self): return len(self.stack) def prettyprint(self): for thing in self.stack[::-1]: print('|_', thing, '_|') ### Lab11-14 (ex11-5.py) ### pancakes = Stack() pancakes.add_one('blueberry') pancakes.add_many('chocolate', 4) print(pancakes.size()) pancakes.remove_one() print(pancakes.size()) pancakes.prettyprint() ### Lab11-15 (ex11-6.py) ### circles = Stack() one_circle = Circle() one_circle.change_radius(2) circles.add_one(one_circle) for i in range(5): one_circle = Circle() one_circle.change_radius(1) circles.add_one(one_circle) print(circles.size()) circles.prettyprint() ### Lab11-16 (ex11-7.py) ### circles = Stack() one_circle = Circle() one_circle.change_radius(2) circles.add_one(one_circle) one_circle = Circle() one_circle.change_radius(1) circles.add_many(one_circle, 5) print(circles.size()) circles.prettyprint() ### Lab11-17 (ex11-8.py) ### class Player: """ 玩家 """ def __init__(self, name): """ 指定玩家姓名並生成空 list """ self.hand = [] self.name = name def get_name(self): """ 回傳玩家姓名 """ return self.name ### Lab11-18 (ex11-9.py) ### class Player: """ 玩家 """ def __init__(self, name): """ 指定玩家姓名並生成空 list """ self.hand = [] self.name = name def get_name(self): """ 回傳玩家姓名 """ return self.name def add_card_to_hand(self, card): if card != None: self.hand.append(card) def remove_card_from_hand(self, card): self.hand.remove(card) def hand_size(self): return len(self.hand) ### Lab11-19 (ex11-10.py) ### class CardDeck(): def __init__(self): hearts = '2H, 3H, 4H, 5H, 6H, 7H, 8H, 9H' diamonds = '2D, 3D, 4D, 5D, 6D, 7D, 8D, 9D' spades = '2S, 3S, 4S, 5S, 6S, 7S, 8S, 9S' clubs = '2C, 3C, 4C, 5C, 6C, 7C, 8C, 9C' self.deck = hearts.split(', ') + diamonds.split(', ')+ spades.split(', ') + clubs.split(', ') ### Lab11-20 (ex11-11.py) ### import random class CardDeck(): def __init__(self): hearts = '2H, 3H, 4H, 5H, 6H, 7H, 8H, 9H' diamonds = '2D, 3D, 4D, 5D, 6D, 7D, 8D, 9D' spades = '2S, 3S, 4S, 5S, 6S, 7S, 8S, 9S' clubs = '2C, 3C, 4C, 5C, 6C, 7C, 8C, 9C' self.deck = hearts.split(', ') + diamonds.split(', ')+ spades.split(', ') + clubs.split(', ') def get_card(self): if len(self.deck) < 1: return None card = random.choice(self.deck) self.deck.remove(card) return card def compare_cards(self, card1, card2): if card1[0] > card2[0]: return card1 elif card1[0] < card2[0]: return card2 elif card1[1] > card2[1]: return card1 else: return card2 ### Lab11-21 (ex11-12.py) ### name1 = input("What's your name? Player 1: ") player1 = Player(name1) name2 = input("What's your name? Player 2: ") player2 = Player(name2) deck = CardDeck() ### Lab11-22 (ex11-13.py) ### name1 = input("What's your name? Player 1: ") player1 = Player(name1) name2 = input("What's your name? Player 2: ") player2 = Player(name2) deck = CardDeck() while True: player1_card = deck.get_card() player2_card = deck.get_card() player1.add_card_to_hand(player1_card) player2.add_card_to_hand(player2_card) if player1_card == None or player2_card == None: print('Game Over. No more cards in deck.') print(name1, ' has ', player1.hand_size()) print(name2, ' has ', player2.hand_size()) print('Who won?') if player1.hand_size() > player2.hand_size(): print(name2, ' wins!') elif player1.hand_size() < player2.hand_size(): print(name1, ' wins!') else: print('A Tie!') break else: print(name1, ': ', player1_card) print(name2, ': ', player2_card) if deck.compare_cards(player1_card, player2_card) == player1_card: player2.add_card_to_hand(player1_card) player1.remove_card_from_hand(player1_card) else: player1.add_card_to_hand(player2_card) player2.remove_card_from_hand(player2_card) ### Lab11-23 (Capstone 7 完整程式) ### import random class Player: """ 玩家 """ def __init__(self, name): """ 指定玩家姓名並生成空 list """ self.hand = [] self.name = name def get_name(self): """ 回傳玩家姓名 """ return self.name def add_card_to_hand(self, card): if card != None: self.hand.append(card) def remove_card_from_hand(self, card): self.hand.remove(card) def hand_size(self): return len(self.hand) class CardDeck(): def __init__(self): hearts = '2H, 3H, 4H, 5H, 6H, 7H, 8H, 9H' diamonds = '2D, 3D, 4D, 5D, 6D, 7D, 8D, 9D' spades = '2S, 3S, 4S, 5S, 6S, 7S, 8S, 9S' clubs = '2C, 3C, 4C, 5C, 6C, 7C, 8C, 9C' self.deck = hearts.split(', ') + diamonds.split(', ')+ spades.split(', ') + clubs.split(', ') def get_card(self): if len(self.deck) < 1: return None card = random.choice(self.deck) self.deck.remove(card) return card def compare_cards(self, card1, card2): if card1[0] > card2[0]: return card1 elif card1[0] < card2[0]: return card2 elif card1[1] > card2[1]: return card1 else: return card2 name1 = input("What's your name? Player 1: ") player1 = Player(name1) name2 = input("What's your name? Player 2: ") player2 = Player(name2) deck = CardDeck() while True: player1_card = deck.get_card() player2_card = deck.get_card() player1.add_card_to_hand(player1_card) player2.add_card_to_hand(player2_card) if player1_card == None or player2_card == None: print('Game Over. No more cards in deck.') print(name1, ' has ', player1.hand_size()) print(name2, ' has ', player2.hand_size()) print('Who won?') if player1.hand_size() > player2.hand_size(): print(name2, ' wins!') elif player1.hand_size() < player2.hand_size(): print(name1, ' wins!') else: print('A Tie!') break else: print(name1, ': ', player1_card) print(name2, ': ', player2_card) if deck.compare_cards(player1_card, player2_card) == player1_card: player2.add_card_to_hand(player1_card) player1.remove_card_from_hand(player1_card) else: player1.add_card_to_hand(player2_card) player2.remove_card_from_hand(player2_card)