2016-04-07 9 views
0

Ich muss ein Programm schreiben, das die Benutzer zahlen berechnet. Der Teil, an dem ich festhalte, ist, wo ich nach der Anzahl der Stunden fragen muss, die der Benutzer für jeden Tag der Woche gearbeitet hat (was wiederholt wird, abhängig davon, wie viele Wochen sie angegeben haben). Das ist, was ich habe, so weit:Python: verschachtelte Schleifen nicht so, wie ich sie will

daysofweek = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"] 

day = 0 
while day < weeks: #user specified variable above 0 
    for i in range(len(daysofweek)): 
    while True: 
     daysofweek[i] = input("Enter the number of hours for week 1 " + daysofweek[i] + ": ") 
     try: 
     hours = float(daysofweek[i]) 
     if hours < 0 or hours > 24: 
      print("Invalid: Enter a number between 0 and 24") 
      continue 
     break 
     except ValueError: 
     print("Invalid: Enter a number between 0 and 24") 
day = day + 1 

Sorry für die Wand-Code (ein Teil davon ist wahrscheinlich irrelevant für meine Ausgabe). Im Grunde durchläuft dies die erste Woche die Liste gut, aber dann werden die Tagesnamen durch die eingegebenen Zahlen ersetzt. Außerdem bin ich mir nicht sicher, wie diese Variablen gespeichert werden sollen, damit ich den Lohn später berechnen kann. Tut mir leid, wenn das zu viel verlangt, nur ganz stecken. Vielen Dank!

+0

"aber dann werden die Tagesnamen durch die eingegebenen Zahlen ersetzt" - Ja, das passiert, wenn Sie die Elemente neu zuweisen. Warum, was soll das mit den eingegebenen Werten machen? – TigerhawkT3

+0

Ja, ich weiß, warum es passiert ist, aber ich habe keine Ahnung, wie ich es ändern soll. Ich muss sie addieren und sie mit einer anderen Eingabe multiplizieren. – DanThistle

+0

Ja, das hast du Python gesagt. 'daysofweek [i] = Eingabe ('x')' ** ersetzt ** Werte in 'daysofweek'. Was beabsichtigtest du zu tun? –

Antwort

2

könnten Sie einen dict verwenden, verbinden Sie den Tag und die Anzahl der Stunden:

daysofweek = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"] 
hours = {} 
for day in daysofweek: 
    hour = -1 
    while hour < 0 or hour > 24: 
     hour = input("Enter the number of hours for week 1 " + day + ": ") 
    hours[day] = hour 

Dann Sie den Tag manipulieren und den damit verbundenen Arbeitsaufwand:

from collections import defaultdict 
payperday = defaultdict(lambda: 10, {'Sunday': 20}) 
print(sum(payperday[day] * hours[day] for day in daysofweek)) 

Das Hinzufügen der Wochen kann durch Hinzufügen einer Ganzzahl im Wörterbuchschlüssel und einer Schleife erfolgen:

for week in range(nb_week): 
    for day in daysofweek: 
     hour = -1 
     while hour < 0 or hour > 24: 
      hour = input("Enter the number of hours for week " +str(week) + " " + day + ": ") 
     hours[week, day] = hour 

Dann können Sie für die Anzahl der Stunde fragen arbeitete für eine bestimmte Woche & Tag:

hours[2, 'Sunday'] 

Beachten Sie, dass einige mehr idiomatic code genug ist einfacher Code zu erhalten: Verwendung von for day in daysofweek anstelle der C- Stil for i in range(len(daysofweek)), oder Verwendung von Dictionnary für die Zuordnung von Daten, zum Beispiel.

+0

Ich habe das jetzt: 'daysofweek = [" Montag "," Dienstag "," Mittwoch "," Donnerstag "," Freitag "," Samstag "," Sonntag "]' 'Stunden = {}' ' während Tag 24:' 'Stunde = Eingabe (" Geben Sie die Anzahl der Stunden für Woche 1 ein "+ Tag +": ")' 'Stunden [Tag] = Stunde' ' Tag = Tag + 1' Aber es geht durch die Wochentage unendlich unabhängig von der 'Woche' Wert – DanThistle

+0

Sie müssen 'Woche' erhöhen. Außerdem scheint 'Tag aluriak