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

文字列がパングラムかどうかを判定するPythonプログラムの書き方

このチュートリアルでは、文字列がパングラムかどうかを判定するPythonプログラムの作成方法を解説します。まずは、パングラムについて簡単に説明しましょう。

パングラムとは?

パングラムとは、アルファベットの26文字すべて(大文字・小文字は問わない)を含む文字列のことです。有名な例として「The Quick Brown Fox Jumps Over The Lazy Dog」が挙げられます。

パングラムの判定は、いくつかの異なる方法で実装できます。ここでは、代表的な2つの方法を紹介します。

方法1:基本的なループ処理

まず、最もシンプルな方法から見ていきましょう。以下の手順に従ってプログラムを作成します。

アルゴリズム

1. stringモジュールをインポートする。
2. string.ascii_lowercase(小文字のアルファベット26文字が格納された文字列)で変数を初期化する。
3. パングラムかどうか判定したい文字列を用意する。
4. 判定用の関数 is_pangram(string, alphabets) を定義する。
   4.1. アルファベットを1文字ずつループする。
      4.1.1. その文字が対象の文字列に含まれていない場合:
         4.1.1.1. False を返す。
   4.2. すべての文字が含まれていれば True を返す。
5. 戻り値がTrueなら「パングラム」、そうでなければ「パングラムではない」と出力する。

コード例

## stringモジュールをインポート
import string

## パングラムを判定する関数
def is_pangram(text, alphabets):
    ## アルファベットを1文字ずつチェック
    for char in alphabets:
        ## 文字が文字列に含まれていない場合
        if char not in text.lower():
            ## Falseを返す
            return False
    return True

## 小文字のアルファベットで変数を初期化
alphabets = string.ascii_lowercase

## 判定する文字列
string_one = "The Quick Brown Fox Jumps Over The Lazy Dog"
string_two = "TutorialsPoint TutorialsPoint"

print("パングラム") if is_pangram(string_one, alphabets) else print("パングラムではない")
print("パングラム") if is_pangram(string_two, alphabets) else print("パングラムではない")

実行結果

上記のプログラムを実行すると、次のような結果が出力されます。

パングラム
パングラムではない

方法2:集合(set)を使う方法

次に、Pythonの集合(set)データ構造を使った、より簡潔な方法を紹介します。集合を使うと、要素の存在確認が高速に行えるため、実務的にも効率的なアプローチです。手順は以下の通りです。

アルゴリズム

1. stringモジュールをインポートする。
2. string.ascii_lowercaseで変数を初期化する。
3. パングラムかどうか判定したい文字列を用意する。
4. アルファベットと文字列(小文字に変換したもの)をそれぞれ集合に変換する。
5. 文字列の集合がアルファベットの集合の上位集合であれば「パングラム」、そうでなければ「パングラムではない」と出力する。

それでは、コードを書いてみましょう。

コード例

## stringモジュールをインポート
import string

## 小文字のアルファベットで変数を初期化
alphabets = string.ascii_lowercase

## 判定する文字列
string_one = "The Quick Brown Fox Jumps Over The Lazy Dog"
string_two = "TutorialsPoint TutorialsPoint"

print("パングラム") if set(string_one.lower()) >= set(alphabets) else print("パングラムではない")
print("パングラム") if set(string_two.lower()) >= set(alphabets) else print("パングラムではない")

実行結果

実行結果は方法1と同じになります。

パングラム
パングラムではない

まとめ

このチュートリアルでは、文字列がパングラムかどうかを判定する2つの方法を学びました。

ループ処理による方法はロジックが直感的で分かりやすく、集合を使う方法はコードが非常に簡潔になるという特徴があります。また、集合を使う方法は各文字の存在確認がO(1)で行えるため、パフォーマンス面でも有利です。用途に応じて使い分けるとよいでしょう。

チュートリアルの内容について質問や不明な点がある場合は、ぜひコメント欄でお知らせください。

  1. 文字列が空かどうかをチェックするPythonプログラム

    この記事では、与えられた文字列が空であるかどうかを判定するための解決策とアプローチについて解説します。 問題文 文字列が入力として与えられたとき、その文字列が空(空文字列)であるかどうかを判定する必要があります。 Pythonの文字列はイミュータブル(変更不可)な性質を持っているため、文字列に対して何らかの操作を行う際には注意して扱う必要があります。 ここでは、上記の問題を解決するための2つのアプローチを紹介します。 len()メソッドを使用する方法 等価演算子(==)を使用する方法 アプローチ1:len()メソッドを使う方法 len()関数で文字列の長さを取得し、その長さが0であれば空文

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

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