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

Pythonでパングラムを判定する方法:set()の活用

本記事では、Python 3.x(およびそれ以前のバージョン)において、与えられた文字列が「パングラム」であるかどうかを判定する方法を解説します。パングラムとは、英語のアルファベット26文字すべてを含む文字列のことです。まずは、以下の例を見てみましょう。

入力:str = 'This is the python blog on Tutorial point'
出力:No
入力:str = 'I want to contribute to a dxyzwuvghlkfmq open source project'
出力:Yes

なお、定義上、「完全パングラム」と呼ばれるものは、26個の英字それぞれをちょうど1回ずつ含む文字列を指します。本チュートリアルでは、この「完全パングラム」の概念は扱いません。

それでは、問題の定義と制約条件を確認していきましょう。

問題定義

問題: 与えられた文字列がパングラムであるかどうかを判定せよ。

制約条件

  1. 大文字と小文字は同一視して扱う。
  2. 前述の「完全パングラム」の条件は考慮しない。
入力:1行目にテスト用文字列 str_input を与える。
出力:条件が真であれば「String is a Pangram」を出力し、
そうでなければ「String is not a Pangram」を出力する。

使用するデータ構造

set() とリスト内包表記(List Comprehension)

前提知識

文字列と文字列操作の基本

それでは、本問題で実装するアルゴリズムの手順を簡単に確認しましょう。

  1. 最初のステップは、入力文字列全体を小文字または大文字に変換することです。ここでは、Pythonの文字列型が持つupper()メソッドを使って大文字へ変換します。

  2. 次にset()関数を利用することで、入力文字列に含まれる重複のない要素(文字)の集合を作成できます。

  3. 続いて、数字や特殊記号を除外したアルファベットのみを格納する新しいリストdist_listを作成します。

  4. 最後に、dist_listの長さが26であるかどうかを判定します。条件が成立すれば入力はパングラムであり、そうでなければパングラムではありません。

実装例

# パングラムを判定するユーザー定義関数
def check_pangram(str_input):
    # 入力文字列を大文字に変換
    str_input = str_input.upper()

    # 入力文字列をset()に変換すると、
    # 重複のない要素の集合が得られる
    str_input = set(str_input)

    # 数字・記号からアルファベットだけを取り出す
    # ord(ch) は文字 ch のASCIIコードを返す
    dist_list = [char for char in str_input
                 if ord(char) in range(ord('A'), ord('Z') + 1)]

    if len(dist_list) == 26:
        return 'String is a Pangram'
    else:
        return 'String is not a Pangram'

# メイン処理
if __name__ == "__main__":
    str_input = input()
    print(check_pangram(str_input))

まとめ

本記事では、Python 3.x(およびそれ以前のバージョン)を使用して、文字列がパングラムかどうかを判定する方法を学びました。ここで紹介したアルゴリズムは、他のプログラミング言語でも同様に実装できます。ぜひ、お好みの言語でパングラム判定プログラムを作成してみてください。

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

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

  2. Pythonで文字列をJSONに変換する方法|json.loads()の使い方を解説

    PythonでJSON文字列を辞書(dict)に変換する基本Pythonでは、標準ライブラリの json モジュールを使うことで、JSON形式の文字列を簡単に扱うことができます。文字列として渡されたJSONデータをPythonの辞書型に変換するには、json.loads() メソッドを使用します。json.loads() は、有効なJSON文字列を受け取り、それを解析して辞書オブジェクトを返します。返された辞書には、すべての要素にキーを使ってアクセスできます。json.loads()の使用例>>> import json >>> s = {success: