python 入力された英単語の文字数をカウントする方法 練習問題

python

【python】入力された英単語の文字数をカウントする方法【練習問題】

2019年6月20日

環境は、MacBook-Pro, Python 3.7.3 です。

 

練習題材として「入力された英単語(診療科)の文字数を全てカウントしていく方法」のプログラミングコードの実装を行いたいと思います。

 

 

以下が仕様になります。

  1. 診療科を表す英単語を格納するリストを作成する。
  2. アルファベットの小文字をキーとしてまた値を0として辞書を作成する。
  3. inputで診療科目の英単語を入力していく。
  4. リターンキーが入力されたところで、英単語の入力を終了する。
  5. 入力された英単語の小文字を1文字ずつ数を数えていく。

では早速見ていきましょう。

実際のプログラミング

python 入力された英単語の文字数をカウントする方法 練習問題

アルファベットをカウントする辞書を作成する。

簡単な方法であれば、alphabet_code を辞書として作成し、辞書の中に dict.framekeys() を使用する事で、辞書に格納されている全てのキーに対して同じ値(0) を初期値として設定する事ができます。

 

辞書機能の使い方については以下の記事を参照にしてください。

関連記事
python 辞書 dict
【python】辞書の作り方【基本から応用まで】

続きを見る

 

In[]

または、アルファベット az がUnicode 上で連続であることを利用し辞書を作ります。

 

Unicodeは以下を参照にしてください。Unicodeとは世界の言語をコードとして並べたものです。
 » Unicode一覧

 

ここで、chr(), ord() についてもまとめておきましょう。

chr(): Unicode コードポイントが整数 i である文字を表す文字列を返します。
ord(): Unicode 文字に対し、その文字の Unicode コードポイントを表す整数を返します。
chr()ord() については以下の組み込み関数を参照してください。
>> 組込み関数-python

診療科の英単語一覧の入力を受け付ける。

ここで、while 構文を利用して、診療科目を入力していき、何も入力せずリターンキーを入力したところで break で 抜け出す仕組みを作ります。

ここでfor文とwhile文の違いの復習です。
for文は回数を指定して、指定した回数のループが完了すればループを抜けます。
一方while文は、条件を指定して、その条件がFalseになればループを抜けます。つまり条件がTrueの間、ループ処理を続けるのがwhile文です。

関連記事
Python 条件分岐 繰り返し while文
  【Python】while文の使い方について【繰り返し構文の基本】

続きを見る

以上を利用して、診療科目の英単語一覧の入力を受け付けるコードを作って行きたいと思います。

入力された診療科目の単語の各アルファベットの出現回数を数える。

for文を利用して入力された診療科目の単語の各アルファベットの出現回数を数えるコードを記入します。

 

ここでは for文 を駆使してコードを作成します。

 

wordsword のリスト、word は各診療科目の単語、letter は各診療科目の単語を構成する英文字を現しています。

 

for文の使い方に関しては以下を参照にしてください。




更にfor文の中でも alphabet_code.key() で辞書である alphabet_code に格納されているキーの一覧を参照している事も留意が必要です。

 

メソッドの key() については以下の記事を参照にしてください。

関連記事
python 辞書 dict
【python】辞書の作り方【基本から応用まで】

続きを見る

 

また、非常に重要なポイントですが、alphabet_code[letter] += 1 とする事で、対象key である lettervalue に対して +1 することができます。

 

そうする事で、英文字がカウントされていくわけです。

単語一覧をソートする。

次にリストであるwords に入っている文字をソートしていきます。

 

ソートの仕方については以下を参照にしましょう。
>> Pythonでリストをソートするsortとsortedの違い


ソートする事で、words に入っている単語をアルファベット順に並べる事ができます。

結果を表示する。

最後に結果を表示させます。

for letter, count in alphabet_code.items() に関しては  items() のメソッドを使用する事で、格納されている要素のキーと値に対してforループ処理を行います。以下を参照にしてください。
>> Pythonの辞書(dict)のforループ処理 

また、for letter, count in alphabet_code.items(): と言ったような、for文と辞書とメソッドの items() を組み合わせる方法については是非とも習得しておきましょう。以下のサイトを参照にしてください。
>> python dict(辞書) keys, values items について

まとめ|辞書の使い方の復習

python 入力された英単語の文字数をカウントする方法 練習問題

最終的なコードは次の様になります。

出力結果は次の様になります。

今回の問題を解くためには、まず辞書の機能をきちんと使用できるかどうか、while ループが使用できるかどうかがキモになります。

 

この問題を解くために必要な知識をまとめておきます。

 

 ポイントとなる知識

  1. 辞書の作り方の基本的な理解
  2. Unicode の chr()ord() の理解
  3. while 文とbreak の使い方の理解
  4. for loop の理解[/box]この問題を通して復習して頂ければ幸いです。

-python
-, , ,

Copyright© Tommy blog  , 2020 All Rights Reserved.