2017-01-31 3 views
-3

Ich weiß nicht wirklich, was mit meinem Code falsch ist. Ich arbeite seit ein paar Tagen daran und habe mehrere Male in diesem Forum gepostet, aber ohne Erfolg. Dies wird der Ausgang i erhalten: enter image description herePython-Wechselmaschine. Probleme mit der Berechnung der korrekten Werte

Die Ergebnisse für die Lager 8 q, 10 d sein sollten, 9 n, 8 p auch das letzte Lager in einer vorherigen Iteration benötigt den Start Lager für die nächste Iteration sein, und bald. Deshalb habe ich die while-Schleife. An diesem Punkt, wenn Sie meinen Code korrigieren und posten können, wäre es mir egal (wenn Sie wirklich wollen, auch wenn ich nicht erwarte, dass jemand das tut). Hinweise sind großartig! Ich denke ehrlich, dass das Problem syntaktisch oder in der while-Schleife ist. Jede Hilfe wäre von Vorteil! Ps.s. Ich habe Schleifen zu verwenden, die Funktionen sind nicht erlaubt

pennies = 10 
nickels = 10 
dimes = 10 
quarters = 10 

quarters_spent = 0 
dimes_spent = 0 
nickels_spent = 0 
pennies_spent = 0 

print("\nWelcome to change-making program.") 
in_str = input("\nEnter the purchase price (xx.xx) or `q' to quit: ") 

while in_str.lower() != 'q': 
    dollar_str, cents_str = in_str.split(".") 

    if in_str.lower() == 'q': 
     quit() 

    in_int = int(float(in_str) * 100) 

    if in_int < 0: 
     print("Error: purchase price must be non-negative.") 
     in_str = input("\nEnter the purchase price (xx.xx) or `q' to quit: ") 

    if in_int > 0: 
     payment = input("\nInput dollars paid: ") 
     payment_int = int(float(payment) * 100) 
     change = payment_int - in_int 

     #determines if there payment input 
     if payment_int < in_int: 
      print("Error: Insufficient payment.") 
      payment = input("\nInput dollars paid: ") 
      payment_int = int(float(payment) * 100) 
      change = payment_int - in_int 


     if change == 0: 
      print("No change.") 

     #determines how many quarters, dimes, nickels, and pennies are left 
     while change >= 25 and quarters > 0: 
      change = change - 25 
      quarters_spent += 1 
      quarters = quarters - quarters_spent 

     while change >= 10 and dimes > 0: 
      change = change - 10 
      dimes_spent += 1 
      dimes = dimes - dimes_spent 

     while change >= 5 and nickels > 0: 
      change = change - 5 
      nickels_spent += 1 
      nickels = nickels - nickels_spent 

     while change >= 1 and pennies > 0: 
      change = change - 1 
      pennies_spent += 1 
      pennies = pennies - pennies_spent 



     if quarters == 0 and dimes == 0 and nickels == 0 and pennies == 0: 
      print("Error: ran out of coins.") 
      quit() 

     print("\nCollect Payment Below:") 
     if quarters_spent > 0: 
      print(quarters_spent, "Quarters") 
     if dimes_spent > 0: 
      print(dimes_spent, "Dimes") 
     if nickels_spent > 0: 
      print(nickels_spent, "Nickels") 
     if pennies_spent > 0: 
      print(pennies_spent, "Pennies") 

     print("\nStock: ", quarters, "Quarters, ", dimes, " Dimes, ", nickels, " Nickels, ", pennies, " Pennies ") 

     in_str = input("\nEnter the purchase price (xx.xx) or `q' to quit: ") 

     pennies = pennies 
     nickels = nickels 
     dimes = dimes 
     quarters = quarters 
+0

Nicht wirklich sicher, warum die Downvotes. Nur nach Hinweisen fragen – Veyronvenom1200

+0

Mögliche Gründe: Schlechter Titel, schwer lesbares Bild anstelle von reinem Text. – Barmar

+0

Ill update dann – Veyronvenom1200

Antwort

1

Das Problem ist, Zeilen wie diese:

quarters = quarters - quarters_spent 

Jedes Mal durch die Schleife, sind Sie 1 bis quarters_spent hinzufügen. Also das erste Mal, dass Sie 1 von quarters subtrahieren, das nächste Mal, wenn Sie 2 von quarters subtrahieren, und so weiter. Sie sollten nur 1 von Quartalen jedes Mal subtrahieren.

while change >= 25 and quarters > 0: 
     change -= 25 
     quarters_spent += 1 
     quarters -= 1 

und ähnlich für die anderen Münzen.

Auch wenn jeder Kauf nur die Änderung aller Käufe für diesen Kauf zeigen, nicht die akkumulierte Änderung soll, sollten Sie quarters_spent, dimes_spent, nickels_spent und pennies_spent-0 innerhalb der Schleife gesetzt, bevor die Änderung der Berechnung.

+0

Danke! Das hat meine Probleme gelöst und mein Code läuft gut – Veyronvenom1200

Verwandte Themen