Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで括弧のバランスをチェックする方法


プログラムや数学的な式では、括弧が頻繁に使用されます。式が「バランスが取れている」とは、開き括弧ごとに対応する閉じ括弧が存在し、括弧の並び順が正しいことを意味します。構文エラーのチェックなどにおいて重要な概念であり、本記事ではPythonを使って、括弧を含む式がバランスしているかどうかをプログラムで判定する方法を紹介します。

削除法による判定

ここで紹介するのは「削除法」と呼ばれるシンプルなアプローチです。まず、式の中から括弧のペア(「()」「{}」「[]」)を見つけ、それらを空文字列に置き換えて取り除きます。この操作を繰り返し、すべての括弧ペアを除去していきます。

すべての処理が完了した時点で文字列が空になっていれば、すべての括弧が正しく対になっている、つまり式はバランスしています。逆に何らかの括弧が残っていた場合は、対応関係が崩れているため、バランスしていないと判断できます。

実装例

以下のコードでは、replace()メソッドを使って括弧のペアを順次削除し、最終的に文字列が空になったかどうかを確認しています。

def brackets(expression):
    all_br = ['()', '{}', '[]']
    while any(x in expression for x in all_br):
        for br in all_br:
            expression = expression.replace(br, '')
    return not expression

# 関数の呼び出し
input_string = "([]{}("
if brackets(input_string):
    print(input_string, "balanced")
else:
    print(input_string, "Not balanced")

コードのポイント

  • all_br: チェック対象となる括弧ペアのリストです。
  • while any(...): 式の中にまだ括弧ペアが残っている限り、ループ処理を続けます。
  • expression.replace(br, ''): 各括弧ペアを空文字列に置換することで削除します。
  • return not expression: 文字列が空ならTrue(バランスあり)、そうでなければFalse(バランスなし)を返します。

出力結果

上記のコードを実行すると、以下の結果が得られます。

([]{}( Not balanced

入力文字列「([]{}(」には対応する閉じ括弧がない開き括弧が1つ残るため、「Not balanced(バランスしていない)」と判定されました。もし「([]{}())」のようにすべての括弧が完全なペアで揃っていれば、「balanced」と表示されます。

  1. 【Python】約数の個数が偶数か奇数かを判定するプログラムの書き方

    この記事では、ある整数の約数の個数が偶数か奇数かを判定するPythonプログラムについて、その考え方と実装方法をわかりやすく解説します。 問題文 ある数「n」が与えられたとき、その約数の総数が偶数であるか奇数であるかを判定してください。 例えば、n = 10 の場合、約数は 1, 2, 5, 10 の4つなので「偶数」。一方、n = 100 の場合は 1, 2, 4, 5, 10, 20, 25, 50, 100 の9つとなり「奇数」となります。 アプローチ:約数を実際に数える 最も基本的な方法は、すべての約数を見つけ、その個数が偶数か奇数かをチェックすることです。 ここで重要なのは、約数

  2. 【Python】与えられた数がフィボナッチ数かどうかを判定する方法を解説

    本記事では、以下の問題文に対する解決策について詳しく学んでいきます。 問題の定義 数値 n が与えられたとき、その数がフィボナッチ数であるかどうかを判定します。 ご存知のとおり、n番目のフィボナッチ数は「直前の2つのフィボナッチ数の和」として定義されます。しかし、この漸化式以外にも、フィボナッチ数には興味深い数学的な性質が存在します。 フィボナッチ数の判定に使える重要な性質 ある数 n がフィボナッチ数であるのは、次の条件が成り立つ場合、かつその場合に限られます。 5×n² + 4 が完全平方数である または 5×n² − 4 が完全平方数である つまり、上記のどちらか一方(または両方)が