Day 98スタック構造をリストで実装
Pythonコード
1class Stack:2 def __init__(self):3 self.stack = []4 def push(self, item):5 self.stack.append(item)6 def pop(self):7 if not self.is_empty():8 return self.stack.pop()9 else:10 return None11 def is_empty(self):12 return len(self.stack) == 013 def size(self):14 return len(self.stack)15 16stack = Stack()17while True:18 print("1. プッシュ 2. ポップ 3. サイズ 4. 終了")19 try:20 choice = int(input("選択: "))21 except ValueError:22 print("数字を入力してください")23 continue24 if choice == 1:25 item = input("アイテム: ")26 stack.push(item)27 elif choice == 2:28 item = stack.pop()29 if item is not None:30 print("ポップ: " + item)31 else:32 print("スタックは空です")33 elif choice == 3:34 print("サイズ: " + str(stack.size()))35 elif choice == 4:36 break37 else:38 print("無効な選択")
解説
- 行1〜3: スタッククラスを定義します。スタックはリストで実装されます。__init__メソッドでスタックを初期化します。ここで、self.stack = [] で空のリストを生成し、スタックとして使用します。
- 行4〜5: pushメソッドでアイテムをスタックに追加します。append()関数は、リストの末尾に要素を追加する組み込み関数です。
- 行6〜8: popメソッドでスタックからアイテムを取り除きます。pop()関数は、リストの末尾の要素を削除して返す組み込み関数です。
- 行9〜10: is_emptyメソッドでスタックが空かどうかを確認します。len()関数は、リストの要素数を返す組み込み関数です。
- 行11〜12: sizeメソッドでスタックのサイズを取得します。len()関数は、リストの要素数を返す組み込み関数です。
- 行13〜15: スタックのインスタンスを作成し、whileループでメニューを表示します。ユーザーの選択に応じて、プッシュ、ポップ、サイズ、終了の処理を実行します。
- 行16〜17: ユーザーの入力を取得し、try/exceptで数値変換のエラーを処理します。選択が1の場合、アイテムをプッシュします。
- 行18〜20: 選択が2の場合、アイテムをポップします。スタックが空の場合、メッセージを表示します。
- 行21〜22: 選択が3の場合、スタックのサイズを表示します。選択が4の場合、ループを終了します。
- 行23〜38: 補足: input()関数は、ユーザーから入力を受け取る組み込み関数です。print()関数は、画面に文字や値を表示する組み込み関数です。
次に試してみよう
- スタックに複数のアイテムをプッシュし、ポップしてみましょう。
- スタックのサイズを取得して、空かどうかを確認してみましょう。
- スタックを使用して、簡単な計算機を作成してみましょう。