
中学生の大学共通テスト ぷろぐらみんぐ脳トレ 第3回 if 文とwhile文
第2回は配列処理について学習、脳トレを行いました。今回は条件式の判定により処理文の分かれるif文と、条件式を満たしている間ループを繰り返すwhile文について学習、脳トレをいたします。共通点としてどちらも 文に条件式が含まれています。条件式は 「ぺけぺけ が ペコペコと 等しい」と言う時は「 ぺけぺけ==ペコペコ 」のようにイコールを2つ並べます。また「ぺけぺけ は ペコペコ以上」は 「ぺけぺけ>=ペコペコ」、「ぺけぺけ は ペコペコ以下」は「ぺけぺけ<=ペコペコ」、より大きいは 「ぺけぺけ>ペコペコ」、未満は 「ぺけぺけ< ペコペコ」となります。
if 文
f文のルール(パターン1)
if(もし)文は分岐処理といって、条件によって実行される文が異なってきます。まずは一番簡単なパターンを覚えましょう。
それは、条件がyes(はい、条件を満足しています。)の時だけ●印の字下げした指定文を実行するパターンです。つまり条件を満足しない場合は、何もしないで次の文へ進みます。
例)
もし お財布の中身が1000(円)未満なら、500円を加える。
これは1100円入っていれば、「何もしない」という事になります。
お財布=1100
if お財布<1000:
● お財布=お財布+500
次の文
・
・
詳しく説明すると、お財布と言う変数が1000未満ならば、次の字下げした●印の文が実行され、お財布に500が加算されます。ところがこの例ではお財布は1100なので条件を満足しない、つまりno(ノー)なので何もせず、次の文へ進みます。ですからお財布は1100のままです。
では練習です。何と表示されるでしょう? なお#マークより右は文の説明です。
お財布=0
お財布=お財布+1000 #説明 1000円入れた。
お財布=お財布− 200 #説明 200円使った。
if お財布<=900:
● お財布=お財布+500
print( お財布 )
if文でお財布は800で900未満なので条件を満足しており、500が加算されます。結局 print文で、800+500の1500が表示されます。
では次の例題です。何と表示されますか?
お財布=0
お財布=お財布+1000 #説明 1000円入れた。
お財布=お財布− 200 #説明 200円使った。
if お財布<=600:
● お財布=お財布+500
print( お財布 )
答えは、800と表示されます。if文で既にお財布は800です。600以下では無いので、何もせず次の行のprint文へと進みます。
if文のルール(パターン2)
パターン2は、if(もし)文の条件式が、yes(はい)の場合の他に加えて、no(いいえ)の場合に何か別の処理をする時の記載ルールです。
no(いいえ)の時は、else:(そうでなければ:)と記載し、次の行の字下げした■印の文が実行されます。
例えば
もし お財布の中身が1000(円)未満なら、500円を加える。
1000円以上入っていれば、200円を引く、という場合は
if お財布<1000:
● お財布=お財布+500
else:
■ お財布=お財布−200
次の文
・
・
と記載します。つまりこの例では、お財布と言う変数が1000未満ならば、次の字下げした●印の文が実行され、お財布に500が加算されます。そして1000以上なら、条件を満足しない、つまりno(ノー)なのでelseの指定文で200を引きます。
ではお財布は英語でpurseと書くので、変数名をpurseにしてpython風に記載すると、
if purse<1000:
purce=purce+500
else:
purce=purce-200
print(purce)
となります。pythonでは●や■マークは記載せず、字下げだけして記載します。
ちなみにjavascriptで記載すると。
if (purse<1000) {
purce=purce+500;
} else {
purce=purce-200;
}
console.log(purce);
となり、
excel VBAでは
If purce<1000 Then
purce=purce+500
Else
purce=purce-200
End if
Worksheets("Sheet1").Range("A1").Value = purce
となります。
ご覧のとおり、javascript やVBAでは 「End if 」とか終わりの「 }印」とかif文の終わりがわかる様になってますが、pythonではただ単に字下げ(4文字程度)しているだけで特にifやelseの終わりが記載されません。読み間違いに注意しましょう。
if文 の練習問題) 全てpython記載です。
なんと表示されるでしょう。
問1) ちょう簡単!
A=0
T=0
A=A+1000
if A>=1000:
T=1
print( A , T)
問2)このぐらいは頭の中でやりましょう。脳トレです。
A=0
T=0
A=A+999
if A>=1000:
T=1
else:
T=2
print( A, T )
問3) 問2と似てますね!
A=0
T=0
A=A+999
if A>=1000:
T=1
else:
T=2
T=T+100
print( A, T )
問4) 問3と似てますね!
A=0
T=0
A=A+1010
if A>=1000:
T=1
else:
T=2
T=T+100
print( A, T )
問5) 問4と似てますね!
A=0
T=0
A=A+1010
if A>=1000:
T=T+1
else:
T=T+2
T=T+3
print( A, T )
問6) 問5と似てますね!
A=0
T=0
A=A+1010
if A>=1000:
T=T+1
else:
T=T+2
T=T+3
A=A-100
if A>=1000:
T=T+1
else:
T=T+2
T=T+1
print(A , T)
while文
次はwhile文です。while文も第1回に説明したfor文の様に、ループ(繰り返し)をするのですが、for文の様に繰り返し回数を指定するのではなく、条件式を満足する間、延々と繰り返す・・・と言うものです。では
while文の具体例です。なお#印より右は文の説明です。
count=0
sum=0
while count < 10 : #countが9 まで繰り返す
count=count+1 #ループ部分なので字下げしてある。
sum=sum+count #ループ部分なので字下げしてある。
print(count , sum)
countは1から9までで、9回ループします。sumは1+2+3+4+5+6+7+8+9です。合計は45です。
ではwhile文の練習問題です。
練習問題) 上の例と比較してみて下さい。
count=0
ss=0
while count < 10 : #countが10未満のとき繰り返す
count=count+1 #ループ部分 countに1を加算。
ss=ss+count*count #ループ部分 *は掛け算のマーク。
print(count , ss)
答え 9 , 285
データサイエンスの立役者はSS(二乗和)
SSはsum of square の略で平方和といいます。単純にデータを2乗した合計です。
ここ100年の数理統計学の発展、そしてこの広範囲の応用は全てこの平方和のおかげなのです。工業における品質管理や宇宙工学、医療、薬剤データ比較、心理学、社会科学、経済学、AI技術など、全てこの平方和がベースなのです。大学共通テストでは、データサイエンス分野で、相関や回帰分析など、SSを用いたデータ処理は必ず出題されます。またプログラミング分野でも取り上げられる可能性があります。詳しくは、次回以降「アルゴリズム」でご説明いたします。
おわりに
一応、第1回からこの第3回までの学習で、共通テストサンプル問題のプログラミング(第2問)を回答できる、基本ルールの説明は完了しました。ですから各自でサンプル問題の第2問をじっくり考えてみてください。最初は全く急ぐ必要はないので、1日でも2日でもじっくり紙に書いて考えまくるのが、最大の脳トレです。
次回はこんな問題がすらすらと解けるように、各種アルゴリズム、配列、分岐、ループをミックスした本番脳トレ(初級)を予定しています。お楽しみに!!!