# 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] HP=0 monster=random.randint(1,3) if monster == 1: print("野生のアリスが現れました") HP=monsterHP[0] elif monster == 2: print("野生のサタリエルが現れました") HP=monsterHP[1] elif monster == 3: print("野生のスカアハが現れました") HP=monsterHP[2] print("どうしますか?") """ import random monsterName=["アリス","サタナエル","スカアハ"] monsterHP=[350,500,400] n=random.randint(0,len(monsterName)) mainMonster=monsterName[n] mainMonsterHP=monsterHP[n] print("野生の"+mainMonster+"が現れました") print("どうしますか?") while HP > 0: select=int(input("0.死んでくれる? 1.逃げる:")) if select == 0: attack=random.randint(1,100) if attack <= 30: print("うまく当たらなかった!!") print("どうしますか?") else: damage=random.randint(120,180) if monster==1: HP-=damage print("アリスに{}点ダメージを与えました。".format(damage)) elif monster==2: HP-=damage print("サタリエルに{}点ダメージを与えました。".format(damage)) else: HP-=damage print("スカアハに{}点ダメージを与えました。".format(damage)) print("残りHP:{}".format(HP)) if HP <= 0: continue print("どうしますか?") elif select == 1: run_away=random.randint(1,2) if run_away==1: print("逃げられなかった!") print("どうしますか?") else: print("逃げた!") break else: print("勝ちました") ``` 結果: ![](https://i.imgur.com/Elgm4ii.png) ::: ## 問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= """ print("Create Price Table") goods=int(input("How much goods?:")) name_num=1 price_num=1 goods_list=[] price_list=[] for i in range(goods): name=input("Register goods name{}:".format(name_num)) goods_list.append(name) price=int(input("Register the price{}:".format(price_num))) price_list.append(price) name_num+=1 price_num+=1 print("Completion of registration") print() print("Goods: ",goods_list) print("Price: ",price_list) print() total=0 for i in range(goods): item=int(input("0~2から購入するものを入力:")) item_list=goods_list.copy() if item==0: item_pop=item_list.pop(0) num=int(input("何個?:")) total+=price_list[0]*num print(item_pop,"を{}個カードに入れました。".format(num)) elif item==1: item_pop=item_list.pop(1) num=int(input("何個?:")) total+=price_list[1]*num print(item_pop,"を{}個カードに入れました。".format(num)) elif item==2: item_pop=item_list.pop(2) num=int(input("何個?:")) total+=price_list[2]*num print(item_pop,"を{}個カードに入れました。".format(num)) print("Thank you for your purchase") print("Total:{}".format(total)) """ goods_list=[] price_list=[] print("Create Price Table") goods=int(input("How much goods?:")) for i in range(goods): name=input("Register goods name{}:".format(i+1)) price=int(input("Register the price{}:".format(i+1))) goods_list.append(name) price_list.append(price) print("Completion of registration") print() print("Goods: ",goods_list) print("Price: ",price_list) print() total=0 while True: item=int(input("0~{}から購入するものを入力:".format(goods-1))) if item==-1: break num=int(input("何個?:")) print("{}を{}個カードに入れました。".format(goods_list[item],num)) total+=price_list[item]*num print("Thank you for your purchase") print("Total:{}".format(total)) ``` 結果: ![](https://i.imgur.com/c2Xjq6V.png) ::: ## 問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」にして表示してください。 ``` ------------- | 1 | 2 | 3 | ------------- 抽選:2 おめでとう、ティッシュを獲得しました ------------- | 1 | x | 3 | ------------- ``` --- ``` 入出力例1: ------------- | 1 | 2 | 3 | ------------- 抽選:1 おめでとう、商品券100円を獲得しました ------------- | x | 2 | 3 | ------------- 入出力例2: ------------- | 1 | 2 | 3 | ------------- 抽選:3 またの機会を心よりお待ちしています ------------- | 1 | 2 | x | ------------- ``` :::info code: ```python= """ import random print("-"*13) print("| {} | {} | {} |".format(1,2,3)) print("-"*13) choice=int(input("抽選:")) shuffle=random.randint(1,3)   if shuffle==1: n=random.randint(1,3) if n ==1: num=random.randint(1,100) if num<=3: print("おめでとう、Ps5を獲得しました") else: print("またの機会を心よりお待ちしています") elif n ==2: num=random.randint(1,100) if num<=80: print("おめでとう、商品券300円を獲得しました") else: print("またの機会を心よりお待ちしています") elif n ==3: num=random.randint(1,100) print("おめでとう、ティッシュを獲得しました") elif shuffle==2: n=random.randint(1,3) if n ==1: num=random.randint(1,100) if num<=3: print("おめでとう、Ps5を獲得しました") else: print("またの機会を心よりお待ちしています") elif n ==2: num=random.randint(1,100) if num<=80: print("おめでとう、商品券300円を獲得しました") else: print("またの機会を心よりお待ちしています") elif n ==3: num=random.randint(1,100) print("おめでとう、ティッシュを獲得しました") elif shuffle==3: n=random.randint(1,3) if n ==1: num=random.randint(1,100) if num<=3: print("おめでとう、Ps5を獲得しました") else: print("またの機会を心よりお待ちしています") elif n ==2: num=random.randint(1,100) if num<=80: print("おめでとう、商品券300円を獲得しました") else: print("またの機会を心よりお待ちしています") elif n ==3: num=random.randint(1,100) print("おめでとう、ティッシュを獲得しました") if choice ==1: print("-"*13) print("| x | {} | {} |".format(2,3)) print("-"*13) elif choice ==2: print("-"*13) print("| {} | x | {} |".format(1,3)) print("-"*13) elif choice ==3: print("-"*13) print("| {} | {} | x |".format(1,2)) print("-"*13) """ import random select=[1,2,3] name=["Ps5","商品券300円","商品券100円"] prpbability=[3,80,100] shuffle=[] while len(shuffle)<3: rndIndex=random.randint(0,len(name)-1) if rndIndex in shuffle: continue else: shuffle.append(rndIndex) newName=[] newprobability=[] for i in shuffle: newName.append(name[i]) newprobability.append(prpbability[i]) print(newName) print(newprobability) print("-"*13) print("|{:^3}|{:^3}|{:^3}|".format(select[0],select[1],select[2])) print("-"*13) selectNum=int(input("抽選:")) user_select=selectNum-1 user_prob=random.randint(1,100) if user_prob<=newprobability[user_select]: print("おめでとう、{}を獲得しました".format(newName[user_select])) else: print("またの機会を心よりお待ちしています") select[user_select]="x" print("-"*13) print("|{:^3}|{:^3}|{:^3}|".format(select[0],select[1],select[2])) print("-"*13) ``` 結果: ![](https://i.imgur.com/iR2B9rk.png) ::: ## h2 :::info code: ```python= ``` 結果: ::: ## h2 :::info code: ```python= ``` 結果: ::: ## h2 :::info code: ```python= ``` 結果: ::: ## h2 :::info code: ```python= ``` 結果: ::: ## h2 :::info code: ```python= ``` 結果: ::: ## h2 :::info code: ```python= ``` 結果: :::