B06 [宿題]

B06_1 (スクリプト)

ねらい: if 文の使い方と,Pythonスクリプトを実行する際にコマンドライン引数を指定するやり方に慣れる.

Pythonスクリプトを実行するときに,

> python b06_1.py 21 7
のようにスペースで区切って2つの整数を渡し,大きい整数を小さい整数で割った値を表示せよ.但し,引数の順番を小・大としても,大・小としても正しい値を計算するようにし,各数値を,
小さい方の整数は7です
大きい方の整数は21です
大/小は3.0です
  :
のように画面に表示するようにせよ. なお,B06_1では,ユーザーが引数に不正な文字(英字など)を入力した場合のエラー処理は考えなくても良い.


B06_2 (スクリプト)

ねらい: エラー処理の仕方を学ぶ.

b06_1.py を修正し,コマンドライン引数に不正な文字を指定した場合は,「無効な値が入力されました.再入力して下さい!」と表示し,「最初の値を入力して下さい」と表示して最初の整数を,「次の値を入力して下さい」と表示して次の整数を入力するようにせよ.この場合も,引数の順番を小・大としても,大・小としても正しい値を計算するようにせよ.

なお,B06_2では,更に不正な入力を繰り返した場合には,その時点でプログラムが停止し,繰り返し入力を要求しなくてもかまわない.


B06_3 (インタラクティブシェル)

ねらい: インタラクティブシェルの方が簡便に計算できる場合があることを実感する.

自分で好きな自然数を2つ選んで,ユークリッドの互除法で最大公約数を求めよう.計算はインタラクティブシェルを用いて実行し,実行結果をスクリーンショットにとって提出せよ.スクリーンショットは最終結果を含む画面の一部でかまわない.

*自然数の最大公約数は以下の手順で求められる.これをユークリッドの互除法という.

  1. 小さい数で大きい数を割り,その余りで割る数を割る
  2. 次に,ステップ1の割る数をステップ1の余りで割る…

これを繰り返して,計算結果が割り切れるまで続ける. 最後の割る数が最大公約数である.

例を以下に示す.但し,これと同じ数を課題に用いてはならない.

>>> 3355 % 2379
976
>>> 2379 % 976
427
>>> 976 % 427
122
>>> 427 % 122
61
>>> 122 % 61
0


B06_4 (スクリプト)

ねらい: if 文と繰り返し文,入力を組み合わせて,少し複雑なプログラムを作る.

1から10000までの範囲でプログラムがランダムに格納した整数を正解としてこれをあてる数当てゲームを作成せよ.

「整数を入力して下さい」とメッセージを出して,ユーザーが整数を入力して,その数が正解より大きければ「その数は大き過ぎます」,小さければ「その数は小さ過ぎます」と表示し,次の入力を促すようにし,正解と等しければ「当たりです!正解は120でした!」のように正解を表示して終了するようにせよ(メッセージの120のところは正解の数に置き換わる).何も入力しなければプログラムを終了するようにせよ.

なお,不正な文字を入力した場合はプログラムが停止してもかまわない.


B06_5 (スクリプト,オプション)

ねらい: エラー処理の仕方を学ぶ.

b06_2.py は,コマンドライン引数に不正な文字を指定した場合は,「無効な値が入力されました.再入力して下さい!」と表示し,「最初の値を入力して下さい」と表示して最初の整数を,「次の値を入力して下さい」と表示して次の整数を入力するように促したが,更に不正な入力を繰り返した場合には,その時点でプログラムが停止した. これを修正し,不正な文字が入力された場合は繰り返し正しい入力を促すようにせよ.


B06_6 (スクリプト,オプション)

ねらい: 少し複雑なプログラムを作成する.

最大公約数を計算するプログラムを作成しよう. Pythonスクリプトを実行するときに,

> python b06_6.py 21 7
のようにスペースで区切って渡された2つの自然数の最大公約数を計算するプログラムを作成せよ.但し,不正な文字が入力された場合は「無効な値が入力されました.再入力して下さい!」と表示し, 「最初の値を入力して下さい」と表示して最初の整数を, 「次の値を入力して下さい」と表示して次の整数を入力するように,繰り返し促すようにせよ(b06_2.pyのスクリプトを流用すれば良い). また,
3355 % 2379 = 976
2379 % 976 = 427
  :
のように画面に計算過程を表示するようにせよ.