それではいよいよプログラムの実装を行っていきます。設計書を基にそれぞれ細かく作っていきましょう。
設計書の内容は以下でした。

上記を確認するとメインとなるプログラムの処理とそこから呼び出される関数が3つ必要だということがわかります。そのため、まずはメインのプログラムから作成していきましょう。因みに関数を先に作っても問題ありません。私は先におおもとの流れを作ってから細かい処理を関数で実装していく順番で開発しているのでここでもそうするというだけで、どちらが先でも構いません。自分に合った効率が良くなるプログラミングで実装していきましょう。
・メインプログラムを作る
・平均算出関数を作る
・標準偏差算出関数を作る
・分散算出関数を作る
メインプログラムを作る
それでは基軸となるメインプログラムを作っていきます。処理フローの一番上からコードに置き換えていきます。
入力値計の受け取り
まずは画面から入力された値を受け取れるように処理を実装していきます。入力値の受け取りってどうやるの?というところからですが、入力値の受け取りはinput関数というものを使用して実装します。詳しくは以下の記事を参照してください。
ここでは簡単に input() と書くだけで実装することができますので、コードに起こしてみましょう。すると以下のようになると思います。
1 2 |
#入力値の受け取り num = input("計算する数値を入力してください。") |
なお、要件によると受け取った数値は複数あり、それぞれ “,” (カンマ) で区切られているので、数値を”,”で分解する必要があります。
ここで役に立つのがsplit関数と呼ばれるものです。簡単に言うと指定した値で文字列を分解し、分解した値で配列を作る関数です。詳しい使い方は以下の記事をご参照ください。
それではsplit関数を使用して受け取った値を分解してみましょう。すると以下のようになるかと思います。
1 2 3 4 |
#入力値の受け取り num = input("計算する数値を入力してください。") numlist = num.split(",") |
関数の呼び出しと値の受け取り
次に各種関数の呼び出しと戻り値を受け取る変数を用意しましょう。それぞれは同じような処理になるはずですので、一気にコードに起こしてみましょう。なお、関数名はここでは適当な名前を付けておきます。そうすると以下のようになるかと思います。
1 2 3 4 5 6 7 8 |
#平均算出関数の呼び出し ave = calcAve(numlist) #標準偏差算出関数の呼び出し std = calcStd(numlist) #分散算出関数の呼び出し var = calcVar(numlist) |
結果の表示
最後に計算結果を画面に表示させる処理を実装します。
コンソール画面に表示させるにはprint関数を使えばよいので、print関数に受け取った値を渡してあげればよいのです。なので、結果として以下のようになれば良いでしょう。
1 2 3 4 5 |
print("□□□□□結果□□□□□") print("平均 : " + str(ave)) print("標準偏差 : " + str(std)) print("分散 : " + str(var)) print("□□□□□□□□□□□□") |
表示のさせ方はなんでも良いです。できるだけ見やすいように意識しましょう。
関数を作る
メインプログラムができましたので、各種関数を実装していきます。
平均算出関数を作る
まずは平均値を算出する関数を実装していきましょう。
平均値は数学の公式では以下のようになっております。

これをコードに置き換えるためにそれぞれ分解してPythonの変数に置き換えてみます。
x1 ~ xn = numlist
n = numlistの個数
平均値のそれぞれの値は入力された値になるのでnumlistが該当します。あとはそれぞれの値を足した後、n つまり入力された数値の個数で割ってあげる必要があります。
なので、numlistの配列の長さが取得できれば個数が得られそうです。
配列の長さを得るにはlen関数を用います。詳細な使い方は以下をご参照ください。
上記をまとめると以下のようになります。
x1 ~ xn = numlist
n = len(numlist)
それでは役者がそろったので上記を踏まえて平均値を求める関数を作りましょう。
以下のようになっていれば問題ないかと思います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
def calcAve(numlist): #nの算出 n = len(numlist) #合計値用の変数の用意 sum = 0 #合計値の算出 for i in numlist: sum += int(i) #平均値の算出 ave = sum / n return ave |
標準偏差算出関数を作る
それでは次に標準偏差を作っていきます。
標準偏差に馴染みのない人は何それ?って感じでしょうが簡単に言えばそれぞれの数値における平均との差、それのさらに平均の値を取った値になります。公式では以下のように書きます。

平均の時でもそうですが、Σが出ると難しく見えますね。ただやってることはそれぞれの値で、平均との差を2乗して、さらにその平均を求めてるだけです。最後に2乗したものを取り払うように平方根で値を出します。まとめるとやることは、
平均との差を求める。
2乗する
平方根を取る
です。平均自体は上記で作った関数で出てきた値を使えばよさそうですね。2乗は「**2」を使えば簡単に求められますね。じゃあ平方根は?となるでしょうが平方根は言葉を変えれば「1/2乗」です。すなわち「**0.5」でできます。
じゃあこれらを踏まえて関数を作ってみましょう!すると以下のようになりましたでしょうか。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
def calcStd(numlist): #計算用に平均値を求める。 ave = calcAve(numlist) #新しい配列に平均との差を求めた数値を入れていく diffList = [] for num in numlist: diffList.append((int(num) - ave) ** 2) #求めた差分リストから平均を求める関数を使って平均を求める preStd = calcAve(diffList) #標準偏差を求める std = preStd ** 0.5 return std |
最初に平均を求めていますが、呼び出しの際に「def calcStd(numlist,ave) : 」のようにして平均を受け取るように指定するやり方でも構いません。
分散算出関数を作る
それでは最後に分散算出関数を作ります。
では分散の求め方はどうすればいいんだろうとなりますが、簡単です。
標準偏差を2乗する
だけです。なのでシンプルに以下で大丈夫です
1 2 3 4 5 6 |
def calcVar(numlist): #標準偏差を求める std = calcStd(numlist) #分散を求める var = std ** 2 return var |
ここにきて手抜きですね。。。わざわざ固有の関数として実装する必要もないかもしれません。
また、作ってもらえばわかりますが、それぞれ関連性のあるものでしたので、一つの関数にまとめてしまってもよかったかもしれません。が、今回は練習のために一つ一つ細かく実装してみました。
なお、最初に標準偏差を求めていますが、標準偏差の関数同様引数に標準偏差を受け取るように指定しても良いです。
プログラムを一つにし、システムを完成させる。
それでは最後に今まで実装してきたコードを一つにまとめてシステムを完成させましょう。流れとしては最初に必要な関数を定義し、その下にメインプログラムを書きましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
def calcAve(numlist:list): """平均値を求める関数です。 """ #nの算出 n = len(numlist) #合計値用の変数の用意 sum = 0 #合計値の算出 for i in numlist: sum += int(i) #平均値の算出 ave = sum / n return ave def calcStd(numlist:list): """標準偏差を求める関数です。 """ #計算用に平均値を求める。 ave = calcAve(numlist) #新しい配列に平均との差を求めた数値を入れていく diffList = [] for num in numlist: diffList.append((int(num) - ave) ** 2) #求めた差分リストから平均を求める関数を使って平均を求める preStd = calcAve(diffList) std = preStd ** 0.5 return std def calcVar(numlist:list): """分散を求める関数です。 """ std = calcStd(numlist) #分散を求める var = std ** 2 return var num = input("数値を入力してください。") numlist = num.split(",") ave = calcAve(numlist) #平均を求める std = calcStd(numlist) #標準偏差を求める var = calcVar(numlist) #分散を求める print("□□□□□結果□□□□□") print("平均 : " + str(ave)) print("標準偏差 : " + str(std)) print("分散 : " + str(var)) print("□□□□□□□□□□□□") |
できましたでしょうか。今回はせっかくなのでそれぞれの関数にドキュメンテーション文字列とアノテーションをつけております。身に着けたものはなるべく使うようにすると知識の定着が速いので積極的に使えるものは使いましょう。
Pythonファイルにソースコードを書いて実施する。
それではプログラムとして実行できるようにPythonファイルにコードを書いて実装しましょう。
やり方については入門で解説いたしました。忘れてしまった方は再度見直してみてください。

ソースコードを記載した[calcNum.py]等の名前でPythonファイルを作成しコマンドプロンプトから実行してみましょう。コマンドはファイル名を指定するだけです。

実行できましたでしょうか。以上で実装は完了です。
ネットで記事を眺めながらインプットするだけでも良いのですが、自ら考えてアウトプットする方法の方がより実装する力が付きます。今回の演習はその練習になれば幸いです。
それでは次は実装したプログラムについて行うテストについて解説いたします。
今回はここまでです。
お疲れ様でした。
コメント