前提・実現したいこと
python3を勉強しています。
python3で2種類のコードを書きました。
どちらも期待している出力をします。
2種類のコードを比べて、良い点と悪い点を教えてください。
また、どちらのコードを書けるように練習した方がいいかアドバイスを下さい。
ご回答よろしくお願いします。
該当のソースコード
python3
1class Enemy: 2 def __init__(self, name): 3 self.name = name 4 5 def attack(self): 6 print(self.name + "は勇者を攻撃した") 7 8enemies = ["スライム","モンスター","ドラゴン"] 9enemies_num = [] 10 11for i,j in enumerate(enemies): 12 #オブジェクト名を作る 13 a = "number" + str(i) 14 enemies_num.append(a) 15 #enemies_numリストにnumber0、number1・・・と格納されていく 16 17 #オブジェクト名を与える、メソッドで出力する 18 enemies_num[i] = Enemy(j) 19 enemies_num[i].attack()
該当のソースコード2
python3
1class Enemy: 2 def __init__(self, name): 3 self.name = name 4 5 def attack(self): 6 print(self.name + "は勇者を攻撃した") 7 8enemies = [] 9enemies.append(Enemy("スライム")) 10enemies.append(Enemy("モンスター")) 11enemies.append(Enemy("ドラゴン")) 12 13for enemy in enemies: 14 enemy.attack()
2つ目のコードでモンスター数が1000匹いたらソース直書きで1000行書く事になるけどそれは想定済みですか?ドラクエで300~500のようですけど
優秀とか曖昧で条件が書いてないので希望する回答が得られないかもしれないですね。
個人的には、プログラム内にモンスター名は、書きたくないですね。
○この投稿の内容について
ソースコード2が模範解答になっている問題を解いていて、模範解答を見たときに違和感を感じました。ソースコード1は自分で書いたものです。私からすると、モンスター名を一度リストに入れてしまえば次から書かなくて済むためソースコード1の方が便利だと思いました。なんでソースコード2が模範解答になっているんだろうと気になったので、質問を投稿させてもらいました。
初心者向けに分かりやすいコードを模範解答にしたのかもしれません。
○投稿について
なぜこの質問を投稿したのかもっと書けばよかったです。
プログラムが動作していないというわけではないので、そもそもこのサイトを利用する以外で解決するべきでした。
質問、意見をしていただき、感謝します。
回答者のかたもありがとうございました。
なるほど
オブジェクト指向の概念を学習させる為でしょうね
たしかに質問に至った背景を書いていればスマートな回答を得られたかもしれませんね
学習中なら、これ無駄じゃないか?という疑問は持ったまま次に進むといいかもしれません
何故かって言うと次のステップの学習内容では模範解答のやり方をベースにしている可能性があるからです
とはいえ教材によるけど
回答1件
あなたの回答
tips
プレビュー