2017-02-16 2 views
0

Ich habe versucht, herauszufinden, wo die Aus mit einem Fehler ist und hatte kein Glück. Ich bin ein absoluter Anfänger im Programmieren. Der Anstieg soll am zweiten Jahr beginnen, aber mein Code fügt es zum ersten Jahr hinzu. Vielen Dank im Voraus für jede Hilfe!Simple Python-Programm mit while-Schleifen, aus mit einem Fehler

## 
# salaryschedule.py 
# 2/15/2017 
# This program will calculate and print the salary schedule for years 1 
# through 30 for the teachers in Murdock County. For each year of 
# experience, up to 20 years, the salary is increased by 2%. 
# Each year after 20, the salary stays the same as year 20. 
## 

RATE = 2.0 
INITIAL_SALARY = 37238.00 
salary = INITIAL_SALARY 
year = 1 

print("Murdock County") 
print("Teacher Salary Schedule") 
print() 
print("Year   Salary") 
print("----   ------") 



while year < 31 : 
    increase = salary * RATE/100 
    salary = salary + increase 
    print("%4d %15.2f" % (year, salary)) 
    year = year + 1 
+1

Sie wäre besser dran mit einem 'für Jahr in Bereich (...) 'Schleife. Es wäre klarer. – khelwood

+0

Dann 'Jahr' auf 2 ... setzen? – Li357

+0

Es ist nicht um 1, wenn Jahr 1 das * Ende * von Jahr 1 (oder den Beginn von Jahr 2) bedeutet. Fügen Sie einfach ein "+ 1" zu "Jahr" in der Ausgabe hinzu. – Evert

Antwort

0

Sie müssen nur das Gehalt drucken, bevor Sie es erhöhen.

RATE = 2.0 
INITIAL_SALARY = 37238.00 
salary = INITIAL_SALARY 
year = 1 

print("Murdock County") 
print("Teacher Salary Schedule") 
print() 
print("Year   Salary") 
print("----   ------") 



while year < 31 : 
    print("%4d %15.2f" % (year, salary)) 
    increase = salary * RATE/100 
    salary = salary + increase 
    year = year + 1 

Ausgang:

Murdock County 
Teacher Salary Schedule 

Year   Salary 
----   ------ 
    1   37238.00 
    2   37982.76 
    3   38742.42 
    4   39517.26 
    5   40307.61 
    6   41113.76 
    7   41936.04 
    8   42774.76 
    9   43630.25 
    10   44502.86 
    11   45392.91 
    12   46300.77 
    13   47226.79 
    14   48171.32 
    15   49134.75 
    16   50117.45 
    17   51119.79 
    18   52142.19 
    19   53185.03 
    20   54248.73 
    21   55333.71 
    22   56440.38 
    23   57569.19 
    24   58720.57 
    25   59894.99 
    26   61092.89 
    27   62314.74 
    28   63561.04 
    29   64832.26 
    30   66128.90 
+0

Vielen Dank! Jetzt muss ich den Anstieg erst nach 20 Jahren stoppen .... –

+0

Wie könnte ich aufhören, das Gehalt nach 20 Jahren zu erhöhen? Gibt es eine Break-Anweisung, die ich verwenden sollte? –

-1

Ihre while-Schleife die Erhöhung für das Jahr berechnet, die man ist, und dann, dass druckt. Aber du willst einfach das erste Jahr drucken, richtig? Die einfache Lösung besteht also darin, die Druckeinstellungen an den Anfang der Schleife zu verschieben. Das erste Jahr wird korrekt berechnet, und dann werden die Gehaltszahlen geändert und erhöht, bevor die Schleife neu gestartet wird. Wie folgt:

Beachten Sie, dass es das nächste Gehalt/Erhöhung auf der letzten Schleife berechnen wird, aber nicht drucken. Alternativ kann eine Druckzeile vor der Schleife hinzufügen, das Jahr druckt ein, so dass die Schleife beginnt am Jahr 2 (vollständiger Code für zweites Beispiel):

RATE = 2.0 
INITIAL_SALARY = 37238.00 
salary = INITIAL_SALARY 
year = 1 

print("Murdock County") 
print("Teacher Salary Schedule") 
print() 
print("Year   Salary") 
print("----   ------") 

#Changed to so that salary does not increase after 20 years. 

print("%4d %15.2f" % (year, salary)) 
while year < 31 : 
    if year < 20: 
     increase = salary * RATE/100 
     salary = salary + increase 
     year = year + 1 
     print("%4d %15.2f" % (year, salary)) 
    else: 
     year = year + 1 
     print("%4d %15.2f" % (year, salary)) 

Gibt den Ausgang unten, beachten Sie, dass Gehalt nicht auf Jahr erhöht 20. wenn Sie dies nicht wünschen, ändern Sie die 20 in der if-Anweisung, bis 19, so dass es stoppt den Anstieg ein Jahr früher Zugabe:

Murdock County 
Teacher Salary Schedule 

Year   Salary 
----   ------ 
    1   37238.00 
    2   37982.76 
    3   38742.42 
    4   39517.26 
    5   40307.61 
    6   41113.76 
    7   41936.04 
    8   42774.76 
    9   43630.25 
    10   44502.86 
    11   45392.91 
    12   46300.77 
    13   47226.79 
    14   48171.32 
    15   49134.75 
    16   50117.45 
    17   51119.79 
    18   52142.19 
    19   53185.03 
    20   54248.73 
    21   54248.73 
    22   54248.73 
    23   54248.73 
    24   54248.73 
    25   54248.73 
    26   54248.73 
    27   54248.73 
    28   54248.73 
    29   54248.73 
    30   54248.73 
    31   54248.73 
+0

Jetzt muss ich aufhören, das Gehalt nach 20 Jahren zu erhöhen. Ich habe eine andere while-Schleife versucht, aber das hat nicht funktioniert. Gibt es eine Pause, die ich benutzen sollte? –

+0

Wie unterscheidet sich Ihre Lösung von meiner? – eyllanesc

+0

@eyllanesc Ich habe so lange geschrieben, ich habe die Antwort geschickt, nachdem du deine gepostet hast, aber ich habe deine Antwort nicht sehen können, seit ich die Seite geöffnet habe, bevor du sie gepostet hast. – Thomasedv