Это мой текущий код
year = 2022
month = 4
day = 8
count = 15
turn = 1
while count > turn:
if turn % 4 == 0:
day += 5
else:
day +=1
if month == 4 and day > 30:
month += 1
day == 1
print(month)
else:
print(day)
turn +=1
в основном я хочу выйти из системы все дни, когда я работаю в этом и следующем месяце, но по какой-то причине, когда я добираюсь до конца месяца, в этом случае день больше 30, так как в апреле всего 30 дней, я увеличиваю месяц на 1, чтобы изменить это месяц 5 и установить день на 1, но почему-то день не меняется на 1 и продолжает расти так 32, 33 и так далее, почему он не меняется на 1?
этого не будет, так как счетчик никогда не увеличивается. Я сам устанавливаю его в зависимости от того, сколько раз я хочу, чтобы цикл выполнялся, хорошо выполняйте цикл
Я настоятельно рекомендую вам попробовать запустить код, как показано. считать никогда не уменьшается, а перемена никогда не увеличивается, поэтому он будет бесконечным.
не будет ли намного проще просто работать с объектами даты?
то, как код имеет отступ, приращение поворота будет происходить вне цикла, а поскольку количество и поворот никогда не меняются, это бесконечный цикл.
Я запустил его как показано, и он остановился после 15 раз, как и должно быть, поскольку счетчик никогда не увеличивается, увеличивается только значение поворота, поэтому, когда ход достигает 15, цикл останавливается.
Вам нужно будет изменить отступ, чтобы это сработало. Как показано, у вас есть бесконечный цикл. Просто скопируйте и вставьте код прямо из вашего вопроса в свою IDE и попробуйте запустить его.
возможно, вы ошиблись в отступе при публикации вопроса, тогда, когда вы впервые задаете вопрос, обычно просто ищите ответы
отступ имеет решающее значение в python, и мы не можем знать, допустили ли вы ошибку во время программирования или просто отформатировали свой вопрос. Во многих случаях (вопросы по SO) проблема была в неправильном отступе.
да, я знаю, в следующий раз я буду внимательнее, я дважды проверял отступы, когда писал, и думал, что исправил все неправильные отступы, но я пропустил один
В будущем вам не следует редактировать отступ, чтобы вставить свой код. Просто вставьте свой минимальный воспроизводимый пример и поставьте ``` над и под ним.
должно быть day = 1
а не day == 1
year = 2022
month = 4
day = 8
count = 15
turn = 1
while count > turn:
if turn % 4 == 0:
day += 5
else:
day +=1
if month == 4 and day > 30:
month += 1
day = 1 # Issue here
print(month)
else:
print(day)
turn +=1
ах да, спасибо, я полностью пропустил тот факт, что я поставил 2 знака = там, я смотрел на этот код около часа и никогда его не замечал
Цикл while бесконечен с этими значениями
@LancelotduLac исправил бесконечный цикл
Учитывая показанный код, ваш цикл while будет работать вечно.