#python #for-loop #while-loop
Вопрос:
Я новичок в python и пытаюсь преобразовать этот простой цикл for в цикл while. Я не уверен, почему я не получаю тот же результат. Большое спасибо.
for var in (1,2,3,4,5):
total=total var
print(total)
#my attempt
var=0.0
while(var<6):
var=var 1
print(var)
Комментарии:
1. Почему
var
установлено значение 0? Почему для условия установлено значение по< 7
сравнению с вашим циклом for, заканчивающимся на 5 ?2. Изменить на
for var in (1,2,3,4,5,6):
илиwhile(var<6):
(не то и другое :))3. Ваш цикл for проходит через значения в предоставленном вами кортеже
(1, 2, 3, 4, 5)
. Вы увеличиваете общее количество с помощью этих предметов. Это означает, что total напечатает1
,3
,6
,10
,15
. Ваш цикл while-это простой счетчик, который каждый раз увеличивается на 1.4. Почему вы ожидаете такого же результата? В одном случае вы добавляете 1,2,3,4,5, в то время как в другом вы добавляете 1 6 раз.
Ответ №1:
Я просто преобразую свой комментарий в ответ с различными способами его исправления.
для цикла:
for var in (1,2,3,4,5):
total=total var
print(total)
Предполагая total = 0
, что перед циклом в каждом цикле цикла for var
выполняется следующий элемент в предоставленном вами кортеже. Поскольку вы добавляете эти значения total
, вы получаете ту же функциональность, что и функция sum
, которая в значительной степени суммирует значения в коллекции.
в то время как-цикл:
var=0.0
while(var<6):
var=var 1
print(var)
Здесь то, что вы делаете,-это подсчет повторений, в отличие от функции суммирования в цикле for.
Для каждого цикла вы увеличиваете var
значение на 1.
Ваши варианты:
- Подведение
total = 0
for var in (1,2,3,4,5):
total= total var
print(total)
total = 0
var = 0
while var < 5:
var = 1
total = var
print(total)
- Подсчет повторений:
for var in (1,2,3,4,5):
print(var)
var = 0.0
while var < 5:
var = 1
print(var)
Ответ №2:
Причина, по которой вы не получаете тот же ответ, потому что при использовании while вы просто увеличиваете цикл на 1. Приведенный ниже код поможет вам
var=0
count=0
while(var<6):
count=count var
var=var 1
print(count)
Комментарии:
1. Разве это не тот же ответ, что и @Prerak Mathur, но с использованием другого имени переменной?
Ответ №3:
«Разворачивание» обеих петель делает ответ очевидным. Например.
total=0
for var in (1,2,3):
total=total var
print(total)
это то же самое, что:
total = 0
var = 1
total = total var
print(total)
var = 2
total = total var
print(total)
var = 3
total = total var
print(total)
Теперь ясно, что total
это арифметический ряд (0 1 2 … n).
Проделайте то же самое while
с циклом:
var=0.0
while(var<3):
var=var 1
print(var)
это то же самое, что:
var = 0.0
var = var 1
print(var)
var = var 1
print(var)
var = var 1
print(var)
Из чего очевидно, что while
цикл просто увеличивается var
1
на каждой итерации.
Обратите внимание, что я уменьшил количество итераций в каждом цикле для краткости, но та же логика в равной степени применима и к более длинным циклам.
Ответ №4:
Проблема с вашим кодом цикла while заключается в том, что вы определили только счетчик (который равен var = 0.0) в начале цикла while, вы также должны объявить переменную для общей суммы всех элементов
total=0
var=1
while(var<6):
total=total var
print(total)
var=var 1
Это сработает
Ответ №5:
Проблема заключается в логической ошибке в вашем коде. В цикле for вы просматриваете кортеж и добавляете полученное значение. В цикле while вы увеличиваете значение на основе счетчика.
Вот как вы это делаете.
list_items = [1,2,3,4,5]
total = 0
while list_items:
item = list_items.pop()
total = item
print(item)