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

Pythonで文字列がバイナリ文字列(0と1のみ)かどうかを判定する方法

この記事では、与えられた文字列が「0」と「1」だけで構成されているかどうかを確認する方法を解説します。このような文字列はバイナリ文字列と呼ばれます。もし「2」や「3」など他の数字が含まれている場合は、非バイナリ文字列として分類します。

set()を使った方法

Pythonのset()は重複しない要素のみを格納する性質を持っています。そこで、対象の文字列にset()を適用し、その結果を「0」と「1」だけからなる集合と比較します。両者が一致すれば、その文字列は確実にバイナリ文字列です。

また、文字列が「1」のみ、または「0」のみで構成されている場合も考慮する必要があります。そのため、OR条件を使って、集合が{'0'}または{'1'}と一致する場合もバイナリ文字列と判定できるようにします。

サンプルコード

stringA = '0110101010111'
b = {'0', '1'}
t = set(stringA)

if b == t or t == {'0'} or t == {'1'}:
    print("StringA is a binary string.")
else:
    print("StringA is not a binary string.")

stringB = '0120101010111'
u = set(stringB)

if b == u or u == {'0'} or u == {'1'}:
    print("StringB is a binary string.")
else:
    print("StringB is not a binary string.")

実行結果

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

StringA is a binary string.
StringB is not a binary string.

単純な反復処理を使った方法

もうひとつの方法として、あらかじめ値が「01」または「10」である基準用の文字列を宣言しておきます。そして、与えられた文字列の各文字を順番に取り出し、その文字が基準の文字列に含まれていない場合は、フラグを立ててループを抜けます。最終的にフラグが立っていなければ、すべての文字が「0」か「1」であることになるため、バイナリ文字列と判定できます。

サンプルコード

stringA = "01100000001"

b = '10'
count = 0
for char in stringA:
    if char not in b:
        count = 1
        break
    else:
        pass
if count:
    print("StringA is not a binary string")
else:
    print("StringA is a binary string")

stringB = "01200000001"
for char in stringB:
    if char not in b:
        count = 1
        break
    else:
        pass
if count:
    print("StringB is not a binary string")
else:
    print("StringB is a binary string")

実行結果

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

StringA is a binary string
StringB is not a binary string

まとめ

set()を使う方法はコードが簡潔で、文字列全体を一度に判定できるのが特徴です。一方、反復処理による方法は、途中で無効な文字を見つけた時点で処理を中断できるため、長い文字列の場合に効率的な場合があります。用途に応じて使い分けるとよいでしょう。

  1. 指定された文字列がキーワードであるかどうかを確認するPythonプログラム

    この記事では、指定された文字列がPythonのキーワード(予約語)であるかどうかを判定する方法について解説します。問題の概要与えられた文字列が、Pythonにおけるキーワードであるかどうかを確認する必要があります。キーワードとは、言語によって特別な用途のために予約されている単語であり、変数名や関数名などの識別子として使用することはできません。例えば「if」「for」「while」「def」などはすべてキーワードです。これらの名前を変数に使おうとすると、構文エラーが発生します。解決策:keywordモジュールの活用Pythonには標準ライブラリとしてkeywordモジュールが用意されており、これ

  2. Pythonで文字列がパングラムかどうかを判定するプログラムの作成方法

    本記事では、与えられた文字列がパングラムであるかどうかを判定するPythonプログラムの解法とアプローチについて詳しく解説します。 問題の概要 文字列入力が与えられたとき、その文字列がパングラムであるかどうかを判定するPythonプログラムを作成します。 パングラムとは? パングラムとは、英語のアルファベット26文字すべてを少なくとも1回ずつ含む文章や一連の単語のことです。有名な例として「The quick brown fox jumps over the lazy dog」があります。 解法のアプローチ この問題は、以下の手順で解くことができます。 アルファベット全体を表す基準となる文字列