Pythonで文字列がパングラムかどうかを判定するプログラムの作成方法
本記事では、与えられた文字列がパングラムであるかどうかを判定するPythonプログラムの解法とアプローチについて詳しく解説します。
問題の概要
文字列入力が与えられたとき、その文字列がパングラムであるかどうかを判定するPythonプログラムを作成します。
パングラムとは?
パングラムとは、英語のアルファベット26文字すべてを少なくとも1回ずつ含む文章や一連の単語のことです。有名な例として「The quick brown fox jumps over the lazy dog」があります。
解法のアプローチ
この問題は、以下の手順で解くことができます。
- アルファベット全体を表す基準となる文字列を用意する
- 入力文字列を小文字に変換し、大文字・小文字の違いを吸収する
- アルファベットの各文字が入力文字列に含まれているかどうかをループで確認する
- 1つでも欠けている文字があればFalseを返し、すべて含まれていればTrueを返す
実装例
import string
def ispangram(str):
alphabet = "abcdefghijklmnopqrstuvwxyz"
for char in alphabet:
if char not in str.lower():
return False
return True
# main
string = 'The five boxing wizards jump quickly.'
if(ispangram(string) == True):
print("Yes")
else:
print("No")
出力結果
Yes
コードの解説
このコードでは、メンバーシップ演算子(in)を使用して、アルファベットの各文字が入力文字列に存在するかどうかを順番にチェックしています。str.lower()によって入力文字列を小文字化することで、大文字・小文字の違いによる誤判定を防いでいる点がポイントです。
なお、ここでは変数と関数はすべてグローバルスコープで宣言されています。
別の解法:set()を活用した簡潔な書き方
より短いコードで実現したい場合は、集合(set)を使った以下のような実装もおすすめです。
import string
def ispangram(str):
return set(string.ascii_lowercase) <= set(str.lower())
print(ispangram('The five boxing wizards jump quickly.')) # True
この方法では、「アルファベットの集合が入力文字列の集合の部分集合であるか」を1行で判定でき、可読性も高くなります。
まとめ
本記事では、与えられた文字列がパングラムであるかどうかを判定するPythonプログラムについて、ループとメンバーシップ演算子を使う基本的な方法から、set()を活用した簡潔な方法までを紹介しました。どちらのアプローチも計算量はO(n)程度で効率的なので、ぜひ実際にコードを動かして挙動を確かめてみてください。
-
指定された文字列がキーワードであるかどうかを確認するPythonプログラム
この記事では、指定された文字列がPythonのキーワード(予約語)であるかどうかを判定する方法について解説します。問題の概要与えられた文字列が、Pythonにおけるキーワードであるかどうかを確認する必要があります。キーワードとは、言語によって特別な用途のために予約されている単語であり、変数名や関数名などの識別子として使用することはできません。例えば「if」「for」「while」「def」などはすべてキーワードです。これらの名前を変数に使おうとすると、構文エラーが発生します。解決策:keywordモジュールの活用Pythonには標準ライブラリとしてkeywordモジュールが用意されており、これ
-
文字列が空かどうかをチェックするPythonプログラム
この記事では、与えられた文字列が空であるかどうかを判定するための解決策とアプローチについて解説します。 問題文 文字列が入力として与えられたとき、その文字列が空(空文字列)であるかどうかを判定する必要があります。 Pythonの文字列はイミュータブル(変更不可)な性質を持っているため、文字列に対して何らかの操作を行う際には注意して扱う必要があります。 ここでは、上記の問題を解決するための2つのアプローチを紹介します。 len()メソッドを使用する方法 等価演算子(==)を使用する方法 アプローチ1:len()メソッドを使う方法 len()関数で文字列の長さを取得し、その長さが0であれば空文