2016-09-13 10 views
0

私が設計しているゲームでは、「すべてをピックアップ」して「すべてを落とす」作業をしています。プレイヤーには在庫(在庫)があり、各部屋にはその中に何が入っているかを追跡するための独自のものがあります。それが特定のアイテムである場合、それぞれのリストからアイテムを簡単に追加または削除できますが、それがすべてのためのものである場合は、どのように進むべきかわかりません。 (注:これは、プレイヤーが取るように変化し、アイテムをドロップしますように私は在庫にあるアイテムの数を知ることができません)For Loop別のリストから追加する

ROOMNAMEinventory = ['lamp', 'coin'] 
inventory = ['string'] 
do = raw_input("What would you like to do?").upper() 
if(do == 'drop all'): 
    for items in ROOMNAMEinventory: 
    inventory.append(items) 
    ROOMNAMEinventory.remove(items) 
print inventory 
print ROOMNAMEinventory 

は現在、これはプリントアウト:

['string', 'lamp'] 
['coin'] 
None 

なぜそれが印刷んなし?ここ

+0

を、このための百万個の重複がなければなりません反復するリストを変更しないでください。 – polku

+1

コードでは、観測された出力を生成することはできません。 'None'を生成する第3の' print'文はなく、 'do'は' str.upper() 'の戻り値である小文字を含まないので、' drop all''と決して等しくありません。 – chepner

+0

この特定の例では、リストの 'extend'と' clear'メソッドを使用して、同じものを実行することができます。 – Copperfield

答えて

0

2ミス

  1. あなたが低くに対して大文字が、テストに変換!それを反復することは推奨されていない間
  2. あなたはリストを変更、ROOMNAMEinventoryのコピーに繰り返す必要があります:それは['string', 'lamp'] and ['coin']にリストを変更します。

    ROOMNAMEinventory = ['lamp', 'coin'] 
    inventory = ['string'] 
    do = raw_input("What would you like to do?").upper() 
    if(do == 'DROP ALL'): # upper vs upper: could work :) 
        for items in ROOMNAMEinventory[::]: # iterate on a copy of the list 
        inventory.append(items) 
        ROOMNAMEinventory.remove(items) 
    print inventory 
    print ROOMNAMEinventory 
    

    結果:あなたは

固定コードを望んでいないことPythonで

['string', 'lamp', 'coin'] 
[] 
+0

ありがとう!それは本当にうまくいく。追加/削除する前にループ内の何かをチェックすることもできますか?特定の体重を下回らなければならないように、各項目をチェックすることができますか? – Adam

+0

dictを定義する: 'wd = {'lamp':100、 'coin':1}'そして 'wd [items] <10:do something if 'をチェックする –

+0

私はAVALWEIGHTという変数を持つことを考えていました。アイテムをピックアップするたびに、AVALWEIGHTからアイテムのウェイトが減算されます。シングルピックアップ/ドロップアイテムの場合、保存されたアイテムの重量を加算または減算するのは簡単です(すべてをドロップすると元にリセットされます)が、ピックアップではすべてがうまく機能しません。たとえば、 'AVALWEIGHT = 10'と' COINWEIGHT = 15'はコインが在庫を変更しないようにする方法ですが、他のアイテム(重量が少ない場合)はどうなりますか? – Adam

1

Listは追加Oをサポート(drop allを入力する場合)別のNE:

roomname_inventory = ['lamp', 'coin'] 
inventory = ['string'] 
do = raw_input("What would you like to do?").upper() 
if (do == 'DROP ALL'): 
    inventory += roomname_inventory 
    roomname_inventory = [] 
print inventory 
print roomname_inventory 

しかし、あなたがそれを反復しながら、リストを修正することを取り除きたい場合は、あなたも行うことができます:「ドン:

if (do == 'DROP ALL'): 
    while roomname_inventory: 
     inventory.append(roomname_inventory.pop(0))