条件分岐

(菊地先生のオンラインテキスト2006年版に基づく)
プログラムの中で、条件によって異なる操作をさせる方法を学びます。
教科書5.3  if 文  (p.127) 参考書 9章 If ステートメント

ディレクトリ作成

if 文による分岐

if 条件式1 :
    ブロック1 # 条件式1が真のとき実行 (先頭4文字半角スペース、複数文あってもよい)
elif 条件式 2:
    ブロック2    #条件式2が真のとき実行
else:
    ブロック3    #条件式1,2のいずれにも当てはまらないとき実行

  if だけでもよいし、if else だけでもよい。また、elifは複数あってもよい。

補足

条件式の例  A== B       AとBは等しい
                A>=B   AはB以上
                A<B     AはB未満
                A!= B   AとBは等しくない
                A> B and B <C AはBより大きい かつ BはCより小さい
                A> B or   A <C AはBより大きいまたは  AがCより小さい
注意 ==(条件式)と=(代入)を間違えないように。
        A==B    AとBが等しいかどうか を検査
        A=B      BをAに代入

論理式

論理式(続き)

ループから抜ける break

4行目の while 1: は無限ループ(break文などで中断されない限り、無限回繰り返される)を意味します。この場合は、ループから抜けるための条件式とbreakが必須になります。

課題

以下の問題を解いてスクリプトと実行例をメールで送ってください.
作業はpython/04のなかで行うものとし、作成したスクリプトは 残しておいてください
(評価の対象とします)。

メールあて先:          honda@is.kochi-u.ac.jp
サブジェクト名:       p4 kadai
締め切り       :        12/26  17:00

1. 年齢を入力して運賃を表示するスクリプトfare.pyを作成 しな さい。
運賃は、6歳から12歳までは100円、13歳から65歳までは200円、それ以外は0円とします。

実行時には結果の運賃が全てのケースをカバーするように注意して、試しなさい。

実行例
% ./fare.py
年齢は: 15
運賃は   200 円です
(複数のケースについてさらにテストした実行結果を含むようにしてください)

2. 以下の手順に沿って二次方程式の解を計算するプロ グラム q2.py を作りなさい。ただし、実行結果は以下の黄色の囲みの部分の通りになるようにしなさい。なお、平方根の計算には mathの、sqrt() を使うことができます。

    (1) aを入力する
    (2) bを入力する
    (3) cを入力する
    (4) 判別式D=b*b-4*a*cを計算する。
    (5) Dの値に応じて以下の処理を行う。
               (5-1) D<0 のとき "実数解はありません"と表示する
               (5-2) D=0 のとき 重解を計算して表示する
               (5-3) D>0 のとき 2つの解を計算して表示する

実行例
$./q2.py
二次方程式ax^2+bx+c=0の係数を入れてください
a? 1
b? 0
c? 1
実数解はありません
$ ./q2.py
二次方程式ax^2+bx+c=0の係数を入れてください
a? 1
b? 0
c? -1
解は 1.0 と -1.0 です


3.  下記の手順に従ってsin(x)/x=0.90の近似解xを求めるスクリプトkinji.pyを作成しなさい。なお、sin(1.)/1.≒0.85で、ここから、xの減少に伴ってsin(x)/xの値が単 調増加することはわかっているものとします。スクリプトの名前はkinji.pyとしてください。 

(1) xを1.とする。
(2)次の過程を無限ループで繰り返す 。
    (2.1)sin(x)/xを計算してyに代入する。
    (2.2)xとy(sin(x)/x) と 誤差 (0.90-y)の値を表示する。
    (2.3)yの値が0.90以下の場合、xの値を0.01小さくして(2.1)にもどる。
    (2.4)yの値が0.90以上であれば、”近似解がみつかりました。解は**、 誤差は***です。”というメッセー ジを示して、プログラムを終了する。

実行例
./kinji.py
sin(x)/x=0.9の近似解を求めます
x=0.99  sin(x)/x=0.844470685455 誤差=0.5553....
x=0.98  sin(x)/x= 0.84744629642  誤差=0.5255...
中略 .......

x=***   sin(x)/x=************** 誤差=*************
近似解が見つかりました。解は***、誤差は***です。

       (ヒント:ループから抜けるbreak)

注意 2,3のプログラム実行時に、コーディングエラーなどにより、と まらなくなったら、CntlキーとCを同時に押して強制終了させてください。