Что вы делаете здесь, заключается в следующем:
- присваивается значение
0
переменной total_hours
- Вы вычислить значения переменных
hour
, days
и week
с помощью переменной total_hours
со значением 0
и присвоить им результаты тоже
- Вы изменяете значение переменной
total_hours
- Вы печатаете значения
hour
, days
и weeks
как они были вычислены в 2
Чтобы лучше понять, что происходит, вы должны играть немного больше с print
:
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
Если вы хотите (пересчитать) значения зависят от total_hours
, вы могли бы сделать что-то вроде этого:
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()
Вы никогда не изменяли значение 'hours',' days' или 'weeks'. Все, что вы изменили, - 'total_hours'. Переменные присваиваются значениям, а не долам «total_hours». – zondo
Но если я изменяю значение total_hours, то оно работает ... –
Если вы измените его, прежде чем создавать другие переменные, да. Если я позвоню тебе Эрику и скажу своему соседу, чтобы он дал Эрику, он отдаст его тебе. Если, прежде чем я скажу ему это, я скажу ему, что мой брат Эрик, он передаст это моему брату, а не тебе. Если я потом скажу ему, что мой брат - Эрик, это не изменит того, что он уже сделал. У вас все еще не будет этого. – zondo