プログラミング初心者がpythonを学ぶ⑦ 自動評価プログラムの作成

f:id:tamurasann:20190414103444j:plain

 

プログラミング初心者がpythonを学ぶ第七弾です。今回は条件分岐の処理を使って簡単な評価プログラムを作成します。 

 

条件分岐・if文について

条件分岐とはとある事象に対して、AであればYES、BであればNOといったような木が枝分かれするようなことです。

f:id:tamurasann:20190414103945j:plain

pythonではこの条件分岐をif文を使って作成いたします。excelを普段使用している方も条件分岐の関数を作成するときはif文を使用するので入り込みやすいのではないでしょうか。

if文の書き方

基本的な構文としてあらかじめ、変数を設定し、その変数に対してある条件ならばA、ちがう条件ならばB・・・それ以外ならばZというように条件分岐させます。

1:if 変数 演算子 条件:

2: 変数② = '結果'

3:elif 変数 演算子 条件②:

4: 変数② = '結果'

5:else:(上記以外だと)

6: 変数② = '結果'

1:if point >= 80:
2: evaluation = 'Excellent'
3:elif point >= 60:
4: evaluation = 'GOOD'
5:else:
6: evaluation = 'BAD'

簡単なプログラムを作成してみる

テストの点数を入力させて評価するプログラム

1:変数を作成します。値はinput関数で入力してもらいます。

2:input関数で入力してもらった値は文字になってしまうのでintで数値に変換します。

3:if文を作成していきます。入力してもらった数字が80以上なら

4:インテンドで字下げして、evaluation(なんでもOK)という変数を作成し、Excellentという結果

5:入力してもらった数字が60以上なら(80未満)

6:evaluationの変数はGOODという結果

7:それ以外ならば

8:evaluationの変数はBADという結果

9:print関数とformatメソッドで計算結果を出力します。

1:tensuu = input('あなたの点数を入力してください')
2:point = int(tensuu)
3:if point >= 80:
4: evaluation = 'Excellent'
5:elif point >= 60:
6: evaluation = 'GOOD'
7:else:
8: evaluation = 'BAD'
9:print('あなたの評価は{}です。'.format(evaluation))

f:id:tamurasann:20190414105826p:plain

 3教科の点数を自動評価し、コメントを付ける

1:tensuu = input('あなたの英語,数学,理科の点数をカンマで区切って入力してください')
2:point_list = tensuu.split(',')
3:total = 0

1:tensuu変数をinput関数で入力させる

2:point_list変数を先ほど入力させたデータにspilitメソッドで文字を分割させてリストに格納する。

3:空の変数を作成する。

4:for point in point_list:
5:    total = total + int(point)
6:print('あなたの合計得点は{}です。'.format(total))

4:for文を作成する。

5:3で作成した空の変数に繰り返し処理でリスト内の数値を合算させる。

6:print関数とformatメソッドで計算結果を出力

7:if total >= 240:
8:    evaluation = 'Excellent'
9:elif total >= 180:
10:    evaluation = 'GOOD'
11:else:
12:    evaluation = 'BAD'
13:print('あなたの評価は{}です'.format(evaluation))

7:if文を作成する。さきほど合算したtotalが240以上ならば

8:evaluationの変数はExcellent

9:180以上ならば

10:evaluationの変数はGOOD

11:それ以外ならば

12:evaluationの変数はBAD

13:print関数とformatメソッドで計算結果を出力

14:if evaluation == 'Excellent':
15:    comment = 'もう勉強しなくて良いです'
16:elif evaluation == 'GOOD':
17:    comment = 'よく頑張りました。次回も頑張ってください'
18:else:
19:    comment = 'もっと頑張りなさい。頑張りが足りません'
20:print(comment)

14:if文を作成する。evaluation変数がExcellentなら

15:comment変数がもう勉強しなくて良いです

16:evaluation変数がGOODなら

17:comment変数がよく頑張りました。次回も頑張ってください

18:それ以外ならば

19:comment変数がもっと頑張りなさい。頑張りが足りません

20:print関数で計算結果を出力

 

1:tensuu = input('あなたの英語,数学,理科の点数をカンマで区切って入力してください')
2:point_list = tensuu.split(',')
3:total = 0
4:for point in point_list:
5:    total = total + int(point)
6:print('あなたの合計得点は{}です。'.format(total))
7:if total >= 240:
8:    evaluation = 'Excellent'
9:elif total >= 180:
10:    evaluation = 'GOOD'
11:else:
12:    evaluation = 'BAD'
13:print('あなたの評価は{}です'.format(evaluation))
14:if evaluation == 'Excellent':
15:    comment = 'もう勉強しなくて良いです'
16:elif evaluation == 'GOOD':
17:    comment = 'よく頑張りました。次回も頑張ってください'
18:else:
19:    comment = 'もっと頑張りなさい。頑張りが足りません'
20:print(comment)

f:id:tamurasann:20190414113045p:plain

 

最後に

条件分岐のif文を使うと行数が多くなってしまいますね。あとから見てぱっと理解できるように本当は#コメントを付けてプログラミングしていくことが望ましいのでしょうか。