Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Глупый вопрос начинающего программиста.

Bircust Ученик (114), закрыт 1 год назад
Задам тупой вопрос начинающего программиста: почему при выполнении вот такого кода
 integer = 0 
 while integer < 10: 
     integer += 1 
     print(integer) 
python выводит числа 1 до 10 хотя по идее он должен остановится на числе 9?
Лучший ответ
serd Мудрец (17868) 1 год назад
 integer = 0  
while integer < 10:
integer += 1
print(integer)

integer = 0
0 < 10: верно
integer = 0 + 1 = 1
выводим 1
1 < 10: верно
integer = 1 + 1 = 2
выводим 2
2 < 10: верно
integer = 2 + 1 = 3
выводим 3
3 < 10: верно
integer = 3 + 1 = 4
выводим 4
4 < 10: верно
integer = 4 + 1 = 5
выводим 5
5 < 10: верно
integer = 5 + 1 = 6
выводим 6
6 < 10: верно
integer = 6 + 1 = 7
выводим 7
7 < 10: верно
integer = 7 + 1 = 8
выводим 8
8 < 10: верно
integer = 8 + 1 = 9
выводим 9
9 < 10: верно
integer = 9 + 1 = 10
выводим 10
10 < 10: неверно
ДмитрийМыслитель (6559) 1 год назад
мужик, ты числа поменять забыл
serd Мудрец (17868) Ибрагимов Амир, это майл решил сохранить ответ когда я редактировал...
Остальные ответы
Дмитрий Мыслитель (6559) 1 год назад
твой код доходит до такого состояния:
integer уже равно 9
так как integer меньше 9, то условие верно и к значению integer прибавляется 1
следовательно выводится будет 10
ДмитрийМыслитель (6559) 1 год назад
цикл выполняется 10 раз потому что отсчет с нуля
Jurijus Zaksas Искусственный Интеллект (424032) Да он может хоть 100 раз выполняться, если отсчет будет с -90, но итоговое значение будет все равно 10.
λ Искусственный Интеллект (225361) 1 год назад
местами поменяйте

 print(integer) 

integer += 1
BircustУченик (114) 1 год назад
Поменять местами можно, но меня интересует сам принцип, почему работает именно так.
λ Искусственный Интеллект (225361) Николай Иванов,
λИскусственный Интеллект (225361) 1 год назад
 while i < 10: # если i уже равно 10, то переход на ... код
i = i + 1
print(i) # здесь вывод i которое уже = 10, и переход на while
... код
inga zajonc Искусственный Интеллект (185388) 1 год назад
Это называется цикл с предусловием. То есть он выполняется когда при входе в цикл проверяемое условие ещё истинно. Чтобы условие проверялось на выходе из цикла, надо заменить на цикл с постусловием. Как это пишется в Питоне мы не знаем, наверное что-то вроде do {тело цикла} while условие.
ОракулОракул (59190) 1 год назад
Вообще ни при чем цикл. Дело в том что принт стоит после инкремента, а не до. Вот и все. И цикла с постусловием в питоне нет.
Jurijus Zaksas Искусственный Интеллект (424032) 1 год назад
> хотя по идее он должен остановится на числе 9?
Ну поясни свою идею тогда. У меня идея вот какая:

Когда integer=9, происходит проверка цикла while integer < 10, она проходит, выполняется тело цикла integer += 1, integer становится 10, происходит проверка цикла while integer < 10, она не проходит, происходит выход из цикла и печатается результат 10. А у тебя какая идея? Чем ты в своей идее руководствуешься?
Оракул Оракул (59190) 1 год назад
Вся суть в том, что print стоит до инкремента, а не после. Вот и все.
Поменяйте местами и будет ровно, как ожидаете.
Похожие вопросы