文字列の中から偶数の長さの単語を出力するPythonプログラム
本記事では、与えられた問題を解決するための考え方と実装方法について解説します。Pythonの基本的な文字列操作を組み合わせることで、初心者の方でも簡単に実装できる内容となっています。
問題文
文字列が与えられたとき、その中に含まれる単語のうち、文字数が偶数であるものをすべて画面に表示するプログラムを作成します。
例えば、「tutorial point」という文字列が入力された場合、「tutorial」は8文字(偶数)なので出力され、「point」は5文字(奇数)なので出力されません。
解決のアプローチ
この問題は、以下の手順で解決できます。
split()関数を使って、入力文字列を空白区切りで単語に分割します。forループで各単語を順番に取り出し、
len()関数でその単語の文字数を計算します。文字数を2で割った余りが0(つまり偶数)であれば、その単語を画面に表示します。
奇数の場合は、何も表示せず次の単語へ進みます。
実装例
それでは、実際のコードを見てみましょう。
def printWords(s):
# 文字列を空白で分割する
s = s.split(' ')
# 各単語を順に処理する
for word in s:
# 文字数が偶数かどうか判定
if len(word) % 2 == 0:
print(word)
# メイン処理
s = "tutorial point"
printWords(s)
出力結果
tutorial
「tutorial」は8文字のため偶数として判定されて出力され、「point」は5文字のため出力されていないことが確認できます。
コードのポイント
split(' ')は引数に指定した区切り文字(ここでは半角スペース)で文字列を分割し、リストを返します。引数を省略すると連続する空白もまとめて処理されるため、より堅牢な動作になります。len(word) % 2 == 0という条件式で、文字数が偶数かどうかを簡単に判定できます。剰余演算子%を使うのは、偶奇判定の定番テクニックです。このプログラムでは、変数や関数はすべてグローバルスコープで宣言されています。
応用:リスト内包表記を使った簡潔な書き方
Pythonでは、リスト内包表記を使うと同じ処理をより短く書くこともできます。
s = "tutorial point"
even_words = [word for word in s.split() if len(word) % 2 == 0]
print('\n'.join(even_words))
こちらの書き方でも、同じ出力結果が得られます。可読性と簡潔さのバランスを考えて、用途に合わせて使い分けるとよいでしょう。
まとめ
本記事では、split()関数による文字列の分割と、len()関数・剰余演算子を組み合わせた偶奇判定を行うことで、文字列から偶数の長さの単語だけを抽出して表示する方法を学びました。文字列操作とループ処理の基礎を理解するのに最適な題材ですので、ぜひ自分のコードでも試してみてください。
-
指定された文字列のすべての順列を出力するPythonプログラム
本記事では、以下の問題に対する解決策について詳しく学んでいきます。 問題文 1つの文字列が与えられたとき、その文字列から作成できるすべての順列(並べ替えの組み合わせ)を表示する必要があります。 それでは、以下の実装例で具体的な解決策を見ていきましょう。 実装例 # リストを文字列に変換 def toString(List): return .join(List) # 順列の生成 def permute(a, l, r): if l == r: print(toString(a)) else: for i in range(l, r +
-
Pythonで文字列内の単語数を数えるプログラムの書き方【初心者向け】
テキスト処理を行っていると、「入力された文字列の中に単語がいくつ含まれているのか」「特定の単語が何回出現するのか」を調べたい場面によく出会います。この記事では、Pythonを使って文字列内の単語数を数え、その結果を出力する複数の方法を、サンプルコードと実行結果付きでわかりやすく解説します。 基本的な考え方はシンプルです。「単語は空白・改行・タブなどの区切り文字で分けられている」ため、区切り文字の出現回数を数えれば、単語数は「区切り文字の数+1」として求められます。 方法1:forループを使う まずは最も基本的な方法です。文字列を1文字ずつ順番に調べ、区切り文字が見つかるたびにカウントを1