Pythonで文字列に含まれる大文字・小文字の数をカウントする方法
文字列が与えられたとき、その中に含まれる大文字の数と小文字の数をそれぞれカウントしたいケースはよくあります。本記事では、Pythonを使った具体的な実装方法を解説します。
例として、次の文字列を考えてみましょう。
"Hello World"
この文字列に対して期待される出力は以下の通りです。
Upper case: 2 Lower case: 8
forループと条件分岐を使った基本的な方法
最もシンプルなのは、forループで1文字ずつ取り出し、「大文字かどうか」「小文字かどうか」という2つの条件で判定しながらカウントする方法です。
サンプルコード
def countUpperAndLowerCase(sentence):
upper = 0
lower = 0
for i in sentence:
if i >= 'A' and i <= 'Z':
upper += 1
elif i >= 'a' and i <= 'z':
lower += 1
print("Upper case: " + str(upper))
print("Lower case: " + str(lower))
countUpperAndLowerCase("Hello World")このコードでは、各文字をASCIIコード的に 'A'〜'Z' の範囲と比較して大文字を、'a'〜'z' の範囲と比較して小文字を判定しています。スペースなどの記号はどちらの条件にも当てはまらないため、自動的に無視されます。
実行結果
上記のコードを実行すると、以下の出力が得られます。
Upper case: 2 Lower case: 8
isupper() / islower() を使ったより簡潔な方法
Pythonには文字種を判定する組み込みメソッドがあるため、それらを活用するとコードをより読みやすくできます。ジェネレータ式とsum()を組み合わせた書き方の例がこちらです。
sentence = "Hello World"
upper = sum(1 for c in sentence if c.isupper())
lower = sum(1 for c in sentence if c.islower())
print("Upper case:", upper)
print("Lower case:", lower)実行結果は先ほどと同じく Upper case: 2、Lower case: 8 となります。
まとめ
文字列内の大文字・小文字のカウントには、条件比較を行うforループ方式と、isupper()・islower()メソッドを活用する方式があります。どちらも結果は同じですが、後者の方が意図が明確で可読性が高いため、実務ではメソッドを使う書き方がおすすめです。
-
セットを使って文字列内の母音の数をカウントするPythonプログラム
本記事では、Pythonを使って文字列内に含まれる母音の数をカウントする方法について解説します。セット(set)を活用した効率的な実装を中心に、初心者の方にもわかりやすく説明していきます。 問題の概要 問題文:任意の文字列が与えられたとき、その文字列に含まれる母音の数をセットを使って数えます。 基本的なアプローチとしては、文字列全体を先頭から順に走査し、各文字が母音であるかどうかを判定します。母音であればカウントを1ずつ増やしていき、最終的な合計を出力します。 実装例 def vowel_count(str_): count = 0 # 母音をセットとして定義 vowe
-
組み込み関数を使わずに大文字・小文字をカウントするPythonプログラム
この記事では、文字列に含まれる大文字と小文字の数を数える問題を、組み込みの文字判定メソッドに頼らずに解くための考え方と実装方法を解説します。 問題の概要 文字列が入力として与えられたとき、その中に含まれる大文字の数と小文字の数をそれぞれ求める必要があります。 ここでは、isupper() や islower() のような文字判定メソッドは使わず、組み込み関数 ord() を利用して各文字のASCII値を調べることで判定を行います。 ASCII値による判定の考え方 ASCIIコードでは、英字は次のような範囲に割り当てられています。 小文字(a〜z):97〜122 大文字(A〜Z):65〜90