#python
#python
Вопрос:
У меня возникли проблемы с пониманием, почему вывод для этого кода равен 16. Прошу прощения, если я что-то неправильно форматирую, я новичок в кодировании.
Я написал код пару раз, чтобы убедиться, что я правильно его форматировал
x = 1
while x < 10:
x = x
print(x)
Вывод, который выводится для меня, равен 16.
Комментарии:
1. Какой вывод вы ожидали?
2.
x = x
по сути, то же самое, чтоx *= 2
. Вы удваиваетеx
, пока значение не станет больше 10. Начиная с 1, первое,x
которого нетx<10
, равно … 16.3. Я рекомендую сделать отступ
Ответ №1:
Для меня это имеет смысл. Оператор x = x
эквивалентен x *= 2
удвоению x
.
Чтобы помочь вам понять, попробуйте печатать x
после каждой итерации:
x = 1
while x < 10:
x = x
print(x)
Вывод:
2
4
8
16
На каждом шаге:
2 # greater than 10? no
4 # greater than 10? no
8 # greater than 10? no
16 # greater than 10? yes, stop loop
Комментарии:
1. и для случая, когда это непонятно (потому что, как он / она сказал, он / она новичок в кодировании):
x = x
равноx = x x
Ответ №2:
Возможно, изменение местоположения print(x)
могло бы помочь вам:
x = 1
print(1)
while x < 10:
x = x
print(x)
Вывод:
1
2
4
8
16
Как вы можете видеть, есть общий покровитель. Каждая итерация while
дублирует предыдущее значение x
(это связано с x = x
, что может быть интерпретировано как удвоение x).
Тогда условие while x < 10
довольно простое.
1 # Less than 10. Keep looping.
2 # Less than 10. Keep looping.
4 # Less than 10. Keep looping.
8 # Less than 10. Keep looping.
16 # Greater than 10. STOP!