応用プログラミング及び実習 2018年度 第4回 実習課題B

以下の課題を全てやりなさい.

課題B-1

ディクショナリの扱いに慣れよう.

以下のセルを修正して,変数 hoge が次のようなキーと値のペアを持つディクショナリとなるようにしなさい.

キー
名前 "ほげお"
HP 18
MP 999
In [ ]:
# ディクショナリ hoge を定義する

次の指示にしたがって hoge の内容を変更しなさい.

  1. キー MP の値 999 は間違いで,本当は 0 だった.修正しよう
  2. キー 攻撃力0.1 を追加
  3. キー 防御力0.001 を追加
In [ ]:
# ここに hoge の内容を変更する処理を書く

print(hoge)

以下の関数を,次の実行例のような結果が得られるように修正しなさい

<実行例>
Wizard(hoge)
ほげお は魔法使えません
In [ ]:
# 魔法使い判定関数   MP が 0 より大きければ「魔法使い」
#
def Wizard(p):
    if p > 0:                                        # この行修正必要
        print(p, "は魔法使いです")      # この行修正必要
    else:
        print(p, "は魔法使えません")   # この行修正必要
In [ ]:
Wizard(hoge)

以下を実行すると変な出力が得られる.

In [ ]:
for k in [ "攻撃力", "防御力", "すばやさ"]:
        print(hoge["名前"], "の", k, "は", k, "です")

これを修正して,次のような出力が得られるようにしなさい.

ほげお の 攻撃力 は 0.1 です
ほげお の 防御力 は 0.001 です

ただし,

  1. for文はそのまま書き換えず使うこと.
  2. キー khoge のキーの中に存在するかどうか調べる if 文を書いて,上記の print文はそれが True だったときだけ実行するようにする.

課題B-2

以下の関数は,p.138 のコードを基にして作ったものです.

In [ ]:
# 地表で水平方向に速度 v [km/h] で打ち出した物体のふるまいを表示する関数
#
def EscapeVelocity(v):

    print("速度", v, "[km/h]の場合...", end = "")
    
    if v < 28400:              # 第一宇宙速度以下
        print("地上に落下します")
    if v >= 28400 and v < 40300: # 第一宇宙速度以上
        print("月とお友達です")
    if v >= 40300 and v < 60100: # 第二宇宙速度以上
        print("惑星の仲間入りです")
    if v >= 60100:               # 第三宇宙速度以上
        print("アルファケンタウリを目指せ")
  1. まずは,そのまま以下を実行してみましょう.
In [ ]:
for x in [10000, 30000, 50000, 70000]:
    EscapeVelocity(x)
  1. 次に,関数 EscapeVelocity() 中の条件式で and を使っている部分を,a <= v < b の形に書き直しましょう.
  2. この関数の条件判定は,if-elif-else の形にするとすっきり書けます.しかも,上記の 2840040300 のような値を複数箇所に書く必要もなくなるので,バグも入りにくくなります.以下のセルに,そのようにした関数 EscapeVelocity2() の定義を書き,上記で EscapeVelocity() を呼んでいるところを 2 の方を呼ぶように修正して動作確認しましょう.
In [ ]:
# 地表で水平方向に速度 v [km/h] で打ち出した物体のふるまいを表示する関数 ver.2
#