2017-09-28 1 views
0

J'essaie de créer un programme simple pour calculer l'équilibre de la transaction. Tout fonctionne bien, sauf que mes programmes ignorent le premier élément de la liste. J'essaie de trouver ce que j'ai manqué ...Foreach boucle sauter le premier élément sans aucune sorte de fonction pop/remove

Fondamentalement, l'entrée est au format ('D 100', 'W 50'), etc. où D désigne dépôt et W dénote. Le solde initial est supposé être 0.

Voici mon code:

# While loop for continuous input 
def WhileInputActive(function,List=None): 
     while True: 
       inputVariable = input(); 
       if (inputVariable is None) or (not inputVariable): 
         break; 
       if (List is None): 
         function(inputVariable); 
       else: 
         function(List,inputVariable); 


def PlaceInList(List,Input): 
    List.append(Input); 


def CalculateTransactionBalance(): 
    Input = input(); 
    List = [] 
    amount = 0 
    WhileInputActive(PlaceInList,List) 
    for item in List: 
     Type=item[0] 
     string = '' 
     for num in item: 
      if(num.isdigit()): 
       string+=str(num) 
     if(Type == 'D'): 
      amount += int(string) 
     else: 
      amount -= int(string) 
    print(int(amount)) 

CalculateTransactionBalance() 

Voici l'entrée:

D 300 
D 300 
W 200 
D 100 

Voici la sortie:

200 

Le la sortie attendue est de 500, mais le programme saute la première entrée (j'ai fait un peu de creuser sur la cause de l'impression 200 ins tead of 500)

Répondre

0

Vous appelez input() en dehors de votre fonction WhileInputActive et ne faites rien avec les données lues. Plus précisément, cette ligne à l'intérieur CalculateTransactionBalance:

Input = input();