# Python - List - Exercise ###### tags: `Python HomeWork` **例**:着ぐるみのバイトの求人には幾つの条件があります。特に着ぐるみ自体の大きさが決まっているので身長制限があります。とある会社の求人には、160センチ以下が好ましいと書いていて、もし153センチの杏奈が応募したら果たしてTrueなのかFalseなのか、プログラミングで出力してください。 ``` 杏奈の身長を表す変数を利用して比較してください annaHigh = 153 出力例: Ture ``` :::info code: ```python= annaHigh = 153 print( annaHigh <= 160 ) ``` 答え: ![](https://i.imgur.com/SM2qRLJ.png) ::: -------------------------------------------- ## 問1:君に決めて!!!! 今回はひたすらにモンスターに攻撃できるプログラムを異なる書き方で書きましょう。以下の様にモンスターの名前とHPをリストにして、モンスターがランダムに出現するようにしましょう。 ``` monsterName=["アリス","サタナエル","スカアハ"] monsterHP=[350,500,400] ``` **プログラム説明:** * プログラムを実行すると、以下の三体のモンスターからランダムに一体が出現します | 名前 | HP | | -------- | -------- | | アリス | 350 | | サタリエル | 500 | | スカアハ | 400 | * 出現したら、プレイヤーは技「死んでくれる?」を繰り出すか、技「逃げる」を選ぶことができます。そして、どの技にも命中率があります。命中率は以下の通りです。 | 技名 | 命中率 |威力| | -------- | --|--| | 死んでくれる| 70%|120-180ダメージ| | 逃げる  |50%|なし| * もし技「死んでくれる」を選んだら、野生のモンスターを攻撃し、HPを減らします。HPが0以下であればプレイヤーの勝ちです。もちろん、当たらない場合もあるのできちんと当たらなかったと伝えましょう。 * もし技「逃げる」を選んだら、50%の確率で逃げられます。逃げられたときと逃げられなかったときのメッセージが違うので確認してください ``` **入出力例1:** 野生のサタナエルが現れました どうしますか? 0.死んでくれる? 1.逃げる:0 サタナエルに167点ダメージを与えました。 残りHP:333 どうしますか? 0.死んでくれる? 1.逃げる:0 サタナエルに163点ダメージを与えました。 残りHP:170 どうしますか? 0.死んでくれる? 1.逃げる:0 サタナエルに129点ダメージを与えました。 残りHP:41 どうしますか? 0.死んでくれる? 1.逃げる:0 サタナエルに124点ダメージを与えました。 残りHP:-83 勝ちました **入出力例2:** 野生のスカアハが現れました どうしますか? 0.死んでくれる? 1.逃げる:0 スカアハに167点ダメージを与えました。 残りHP:233 どうしますか? 0.死んでくれる? 1.逃げる:0 うまく当たらなかった!! どうしますか? 0.死んでくれる? 1.逃げる:1 逃げられなかった! どうしますか? 0.死んでくれる? 1.逃げる:1 逃げた! ``` :::info code: ```python= import random monsterName = ["アリス", "サタナエル", "スカアハ"] monsterHP = [350, 500, 400] rand_mons=random.randrange (0,2) select_mon=monsterName[rand_mons] while True: print("野生の{}が現れました".Format (select_mon)) print("どうしますか?") print("") choice=int(input("0. 死んでくれる? 1.逃げる:")) if choice == 0: precise=random.randint (1,100) if precise>30: damage=random.randint(120,180) print("{}に{}点ダメージを与えました". format (select_mon, damage)) monsterHP [rand_mons] =monsterHP[rand_mons] - damage print("HP:{}".format(monsterHP[rand_mons])) if monsterHP[rand_mons]<=0: print("勝布ました") break else: print("うまく当たらなかった!!") if choice==1: run=random.randint(1,100) print("逃げた") break if run>50: print("逃げた") break else: print("逃げられなかった") ``` 結果: ::: ## 問2:買っちゃいなよ 価格表から作成し、買い物ができるシステムを作成してみましょう!大きく分けて二つのパートがあります。 **一つ目はリストで価格表の作成:** * プログラム開始したら、「Create Price Table」を出力しましょう。 * そして、登録する商品数を入力します。 * 商品数を入力したら、商品数分商品の登録します。 * 登録するときに必要とされるのは、商品名と値段です。 * 登録し終わったら、出力してください。 **二つ目は買い物を行うシステム:** * リストのindexを利用して、購入する商品の番号を入力できるようにしましょう(入力する番号はindexを超えないとします) * 購入する商品の番号が入力されたら、次は何個買うかを入力します。 * 「購入する商品」と「個数」をカードに入れたと出力します。 * -1が入力されたら、購入を終了しメッセージと買ったものの総額を出力します。 ``` 入力例と出力例1: Create Price Table How much goods?:3 Register goods name1:ピカチュウ Register the price1:2999 Register goods name2:ポチタ Register the price2:2346 Register goods name3:チュパカブラ Register the price3:4666 Completion of registration Goods: ['ピカチュウ', 'ポチタ', 'チュパカブラ'] Price: [2999, 2346, 4666] 0~2から購入するものを入力:2 何個?:4 チュパカブラを4個カードに入れました。 0~2から購入するものを入力:0 何個?:5 ピカチュウを5個カードに入れました。 0~2から購入するものを入力:-1 Thank you for your purchase Total:33659 ``` :::info code: ```python= ``` 結果: ::: ## 問3:抽選箱 ネズミユニバーはおかげ様で開業400周年を迎えます。400周年の感謝の気持ちをこめて、「Mouse you me っぱ 400TH ANNIVERSARY」を開催致します!毎日、抽選イベントを行う予定なので、抽選用のプログラムを書きましょう! **プログラム説明:** * プログラムを起動すると以下の様に、ユーザーに三つの賞品から一つを選んでもらいます。 ``` ------------- | 1 | 2 | 3 | ------------- ``` * 賞品は「Ps5」、「商品券300円」、「商品券100円」です。 但し、「1」が「Ps5」、「2」が「商品券300円」という訳ではなく、プログラムを実行すると、賞品の位置をランダムにシャッフルさせるので、以下の様に実行するたびに賞品の位置が変わります。 **賞品本来の位置と変わった後の位置を出力してください** ``` 例えば: 一回目実行時:「商品券300円」、「Ps5」、「商品券100円」 二回目実行時:「商品券100円」、「商品券300円」、「Ps5」 ``` * そして、単純に「1/3」の確率で抽選を行うと赤字になるので、賞品それぞれの確率は「Ps5:3%」、「商品券300円:80%」、「商品券100円:100%」です。 抽選を入力できるようにします。賞品を選んだら、乱数でユーザーの確率を生成して当たるかどうかを判定します。当たったときのメッセージと当たらなかった時のメッセージを出力しましょう。 * 抽選したところは「x」になります。 抽選した後、以下の様に選んだ賞品を「x」にして表示してください。 :::warning 物足りないと思う人は、一回ではなく抽選を二回できるようにしてみましょう。 ::: ``` ------------- | 1 | 2 | 3 | ------------- 抽選:2 おめでとう、OOOを獲得しました ------------- | 1 | x | 3 | ------------- ``` --- ``` 入出力例1: Before: ['Ps5', '商品券300円', '商品券100円'] After: ['商品券100円', '商品券300円', 'Ps5'] ------------- | 1 | 2 | 3 | ------------- 抽選:1 おめでとう、商品券100円を獲得しました ------------- | x | 2 | 3 | ------------- 入出力例2: Before: ['Ps5', '商品券300円', '商品券100円'] After: ['商品券100円', 'Ps5', '商品券300円'] ------------- | 1 | 2 | 3 | ------------- 抽選:2 またの機会を心よりお待ちしています ------------- | 1 | x | 3 | ------------- ``` :::info code: ```python= ``` 結果: ::: ## h2 :::info code: ```python= ``` 結果: ::: ## h2 :::info code: ```python= ``` 結果: ::: ## h2 :::info code: ```python= ``` 結果: ::: ## h2 :::info code: ```python= ``` 結果: ::: ## h2 :::info code: ```python= ``` 結果: ::: ## h2 :::info code: ```python= ``` 結果: :::