ねらい: 繰り返しを用いて,リストの項目ごとに処理を行い,新しいリストを生成する.
本課題は,課題A05_1の続きである.課題A05_1のプログラムに追加するようにして作成せよ.
納豆購入金額について,金額のばらつきを表す標準偏差を求めたい. 課題A05_1のプログラムは完成し,変数 avg_tohoku に金額の平均が格納されているとする.
空のリスト list_deviation を用意し,for文を用いて各金額と平均との差(偏差)を計算し,メソッド append() を用いて list_deviation に格納せよ.
リスト list_deviation に格納されている値について,各値の二乗の合計(偏差の二乗和)を計算せよ.
2.の結果を用いて,偏差の二乗和の平均(分散)を計算せよ.
分散の平方根を計算せよ.この値が求める標準偏差であるので,表示せよ(途中の過程が表示されていてもよい).
平方根の計算は math モジュールの関数 sqrt() で行える.あるいはべき乗の演算子を用いて1/2乗してもよい.
math モジュールの関数 sqrt() の使い方については,インタラクティブシェルで確認せよ.
>>> import math
>>> math.sqrt(2)
ねらい: if による条件分岐
タクシーの運賃を想定し,乗車距離(整数)を単位mで入力すると,適切な運賃を出力するプログラムを作成せよ. 運賃は以下の条件によって決まるものとする.
ねらい: for と if を組み合わせて,条件によって処理を変える.(リストを使う方法もありますが...)
眠れないときに羊を数えるプログラムを作成する. (プログラムが数えてくれても,あなたは眠くなりませんが...)
まず,以下のように表示するプログラムを作成せよ.
羊が1匹
羊が2匹
羊が3匹
:
羊が99匹
羊が100匹
1.のプログラムを改良し,以下のように表示するプログラムを作成せよ.
ひつじが1ぴき
ひつじが2ひき
ひつじが3びき
:
ひつじが99ひき
ひつじが100ぴき
「匹」の読み方は以下の通りとする.
プログラム2を提出する.スクリーンショットは,プログラム2の,90匹から100匹の出力結果がわかるものを提出せよ.
ねらい: 二重ループを使用する.
以下に示す九九の表を,for 文を二重に用いる(for 文の繰り返しブロックに,for 文を入れる)ことで表示せよ.
print(' 1 2 3 4 5 6 7 8 9')
のような,表示すべき内容を関数 print() でそのまま出力する方法は,題意を満たさないため不正解である.
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
本課題が難しいと感じる場合,まず,以下の課題に取り組め.
for文を用いて,
1 2 3 4 5 6 7 8 9 10
以下は出力を整えるために必要な関数 print() とf文字列に関する知識である(一部再掲).
インタラクティブシェルで以下を試せ.
改行せずに出力する:
>>> print('poo', end='')
変数の値をf文字列で表示する:
>>> i = 2
>>> print(f'{i}')
変数の値を2桁で(2の前に空白を入れて)表示する:
>>> i = 2
>>> print(f'{i:2}')
改行のみ行う.
>>> print()
ねらい: 複雑な条件を適切に判定する.
本課題は,課題A05_3の拡張である.
(プログラム内で)サイコロを3つ振り,3つの目の数を出力した後,3つの目が等しいか,3つのうち2つの目が等しいか,全て異なるかを判定して表示するプログラムを作成せよ.
判定例:
ねらい: 人間が行うと非常に時間がかかる計算を行わせる.
正の整数nについて,自分自身より小さい(n未満の)正の約数の和がnと等しくなるとき,nを完全数という. 100000以下の完全数を探して出力するプログラムを作成せよ.
ねらい: 二重ループの中で条件分岐を使用する.
縦横に「め」が並んでいる中から,「ぬ」がどこにあるかを探す文字探しゲームを作る. 仕様は以下の通りである.
盤面の大きさはキーボードから入力する.最小を5x5,最大を20x20とし,範囲外の値が入力された場合は適切な範囲の値に修正する.
画面に指定された個数の「め」を表示し,そのうち1個を「ぬ」にする.位置の回答がしやすいように,上側と左側に座標を表示する.
探索開始時刻を記録する.
キーボードから,横方向と縦方向の「ぬ」の位置を入力させる.
正解であれば,「正解です!」と表示し,次に探索にかかった時間を表示する.不正解の場合は,「不正解です...」と表示し,次に正解位置を表示する.
画面例を以下に示す.
盤面の横幅(5-20): 5
盤面の縦幅(5-20): 5
盤面のサイズは5×5です.
0 1 2 3 4
0 めめめめめ
1 めめめめめ
2 めめめめめ
3 めぬめめめ
4 めめめめめ
横 = 1
縦 = 3
正解です!
探索時間: 4秒962
ねらい: 確率に関する問題の解をシミュレーションで求める.
まず,以下の問題の答えを予想せよ.予想内容を画面に表示した後に,「ドアを変更する」「ドアを変更しない」のそれぞれについて10000回シミュレーションを行って新車があたる確率を求めて表示し,得られた結果に基づいて,解答を表示せよ.
予想が正しかったかどうかは,表示する必要はない.また予想が当っていたかどうかは,本課題の採点に影響しない.
プレイヤーの前に閉じた3つのドアがある.1つのドアの後ろには景品の新車が,2つのドアの後ろには,はずれを意味するヤギがいる.プレイヤーは新車のドアを当てると新車がもらえる.プレイヤーが1つのドアを選択した後,各ドアの後ろに何があるかを知っている司会者が,残りのドアのうちヤギがいるドアを開けてヤギを見せる.
ここでプレイヤーは,最初に選んだドアを,残っている開けられていないドアに変更してもよいと言われる.
プレイヤーはドアを変更すべきだろうか?