2014-07-18 1 views
0

입력시 dict 걸리고 net 금액을 은행 계좌로 출력하는 프로그램을 만들려고합니다. 입력을 받아 은행 순액을 출력하는 프로그램을 만드는 방법은 무엇입니까?

나는 다음 코드를 시도했지만 출력은 잘못이며 왜 내가 알아낼 수 :

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 

이 입력은 반드시 딕셔너리 일 필요는 없습니다.

+0

dict에는 동일한 키가 여러 개있을 수 없습니다. –

+0

물론, 그것은 사전입니다 ... 얼마나 당황 스럽습니까. –

답변

2

사전은 단일 키에 대해 두 개의 다른 항목을 저장하지 않습니다. 그래서 당신은 키 "D" 여러 항목이 bankDict을 만들 때, 그것은 마지막을 저장합니다

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"] 

당신은 심지어에서 트랜잭션을 추출 할 수 있습니다 : 당신은 목록으로 거래를 할 수 있습니다

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

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

그 자체로는 사전에 클래스로 들어간다.

+0

정보를 제공해 주셔서 감사합니다. 이것은 내가 왜 잘못된 결과를 얻었는지 설명합니다. 따라서이 유형의 프로그램에는 다른 유형의 입력이 필요합니다. –

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 
0

당신은 여전히 ​​그 다음은 각 값 목록의 합계와 계정 밸런스를 조정할 수 있습니다 단지

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

로 변경, 사전에 전달할 수 있습니다 주어진 열쇠.

관련 문제