2016-07-24 20 views
0

Aus irgendeinem Grund kann ich die globale Variable total_hours nicht ändern. Oder warum ist der Ausgang immer 0 0 0?Warum gibt dies immer den Ausgang 0 0 0?

hour = 1 
day = 24 
week = 168 
part_day = 8 
total_hours = int(0) 
hours = total_hours % 168 
days = ((total_hours % 168) // 7) 
weeks = total_hours // 168 

def sleep(): 
     global total_hours 
     global week 
     total_hours += week 

def show_time(): 
     global hours 
     global days 
     global weeks 
     print(hours, days, weeks) 

sleep() 

show_time() 
+1

Sie haben den Wert von 'Stunden',' Tage' oder 'Wochen' nie geändert. Alles, was du geändert hast, ist 'total_hours'. Die Variablen sind Werten zugeordnet, nicht den Bruchteilen von 'total_hours'. – zondo

+0

Aber wenn ich den Wert von total_hours selbst ändern, funktioniert es ... –

+0

Wenn Sie es ändern, bevor Sie die anderen Variablen erstellen, ja. Wenn ich dich Eric nenne und meinem Nachbarn sage, er soll Eric etwas geben, wird er es dir geben. Wenn ich ihm sage, dass mein Bruder Eric ist, dann wird er das Ding meinem Bruder geben, nicht dir. Wenn ich ihm nachher sage, dass mein Bruder Eric ist, ändert das nichts an dem, was er bereits getan hat. Du wirst es immer noch nicht haben. – zondo

Antwort

1

Was Sie hier tun, ist die folgende:

  1. Sie den Wert zuweisen 0 auf die Variable total_hours
  2. Sie berechnen die Werte für die Variablen hour, days und week durch die Variable total_hours mit mit dem Wert 0 und ordnen Sie ihnen auch die Ergebnisse zu
  3. Sie ändern den Wert der Variablen total_hours
  4. Sie drucken die Werte von hour, days und weeks wie sie in 2
berechnet wurden

besser zu verstehen, was passiert man ein bisschen mehr mit print spielen sollten:

hour = 1 
day = 24 
week = 168 
part_day = 8 
total_hours = int(0) 
hours = total_hours % 168 
days = ((total_hours % 168) // 7) 
weeks = total_hours // 168 

def sleep(): 
     global total_hours 
     global week 
     total_hours += week 

print 'values before `sleep`', hours, days, weeks, total_hours 
sleep() 
print 'values after `sleep`', hours, days, weeks, total_hours 

Wenn Sie Wollen Sie (neu) die Werte berechnen, die von total_hours abhängen, könnten Sie etwas tun:

hour = 1 
day = 24 
week = 168 
part_day = 8 
total_hours = int(0) 
hours = total_hours % 168 
days = ((total_hours % 168) // 7) 
weeks = total_hours // 168 

def recalc(): 
    global weeks, days, hours, total_hours 
    hours = total_hours % 168 
    days = ((total_hours % 168) // 7) 
    weeks = total_hours // 168 

def sleep(): 
    global total_hours, week 
    total_hours += week 

def show_time(): 
    global hours, days, weeks 
    print(hours, days, weeks) 

sleep() 
recalc() 
show_time() 
Verwandte Themen