0

入力時に辞書を取り、銀行口座の正味金額を出力するプログラムを作成しようとしています。

次のコードを試しましたが、出力が間違っていて、理由がわかりませんでした。

netAmount = 0
bankDict = {'D':300,'D':300,'W':200,'D':100}
operations = bankDict.keys()
amount = bankDict.values()
for i in range(len(operations)):
    if operations[i] == 'D': netAmount += amount[i]
    elif operations[i] == 'W': netAmount -= amount[i]
else: pass
print netAmount
# OUTPUT: -100

入力は必ずしも辞書である必要はありません。

4

4 に答える 4

2

ディクショナリは、1 つのキーに対して 2 つの異なるエントリを格納しません。したがってbankDict、キーを使用して複数のエントリを作成すると"D"、最後のエントリのみが保存されます。

In [149]: bankDict = {'D':300,'D':300,'W':200,'D':100}

In [150]: bankDict
Out[150]: {'D': 100, 'W': 200}

トランザクションをリストにしたい場合があります。

In [166]: transactions = [{"type": "deposit", amount: 300}, {"type": "deposit", amount: 300}, {"type": "withdrawal", amount: 200}, {"type": "deposit", amount: 100}]

In [167]:for transaction in transactions:
            if(transaction["type"] == "deposit"):
                netAmount += transaction["amount"]
            elif(transaction["type"] == "withdrawal"):
                netAmount -+ transaction["amount"]

トランザクションをディクショナリからクラスに抽出することもできます。

于 2014-07-18T23:07:13.053 に答える
0

以前、ロボットの位置について同様の質問をしたことを思い出しました。次のコードが機能するようになりました。

netAmount = 0
operations = ['D','D','W','D']
amount = [300,300,200,100]
i = 0

while i < (len(operations)):
    if operations[i] == 'D': netAmount += amount[i]
    elif operations[i] == 'W': netAmount -= amount[i]
    else: pass
    i += 1
于 2014-07-18T23:10:53.523 に答える
0

辞書を渡すこともできますが、それを次のように変更するだけです

bank_dict = {'D':[300, 300, 100],
             'W':[200]
            }

次に、特定のキーの各値リストの合計で勘定残高を調整します。

于 2014-07-18T23:24:27.817 に答える