以下の課題を全てやりなさい.
ディクショナリの扱いに慣れよう.
キー | 値 |
---|---|
名前 | "ほげお" |
HP | 18 |
MP | 999 |
以下のセルを修正して,変数 hoge
が上記のようなキーと値のペアを持つディクショナリとなるようにしなさい.
# ディクショナリ hoge を定義する
次の指示にしたがって hoge
の内容を変更しなさい.
MP
の値 999
は間違いで,本当は 0
だった.修正しよう攻撃力
値 0.1
を追加防御力
値 0.001
を追加# ここに hoge の内容を変更する処理を書く
print(hoge)
以下の関数を,次の実行例のような結果が得られるように修正しなさい
<実行例>
Wizard(hoge)
ほげお は魔法使えません
# 魔法使い判定関数 MP が 0 より大きければ「魔法使い」
#
def Wizard(p):
if p > 0: # この行修正必要
print(p, "は魔法使いです") # この行修正必要
else:
print(p, "は魔法使えません") # この行修正必要
Wizard(hoge)
以下を実行すると変な出力が得られる.
for k in [ "攻撃力", "防御力", "すばやさ"]:
print(hoge["名前"], "の", k, "は", k, "です")
これを修正して,次のような出力が得られるようにしなさい.
ほげお の 攻撃力 は 0.1 です
ほげお の 防御力 は 0.001 です
ただし,
for
文はそのまま書き換えず使うこと.k
が hoge
のキーの中に存在するかどうか調べる if
文を書いて,上記の print
文はそれが True
だったときだけ実行するようにする.以下の関数は,p.138 のコードを基にして作ったものです.
# 地表で水平方向に速度 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("アルファケンタウリを目指せ")
for x in [10000, 30000, 50000, 70000]:
EscapeVelocity(x)
EscapeVelocity()
中の条件式で and
を使っている部分を,a <= v < b
の形に書き直しましょう.if-elif-else
の形にするとすっきり書けます.しかも,上記の 28400
や 40300
のような値を複数箇所に書く必要もなくなるので,バグも入りにくくなります.以下のセルに,そのようにした関数 EscapeVelocity2()
の定義を書き,上記で EscapeVelocity()
を呼んでいるところを 2
の方を呼ぶように修正して動作確認しましょう.# 地表で水平方向に速度 v [km/h] で打ち出した物体のふるまいを表示する関数 ver.2
#