Эквивалентный блок while для блока for - PullRequest
0 голосов
/ 09 января 2019

Я новичок, пытающийся выучить Python у Автоматизировать скучный материал с Python от Al Sweigart, и я наткнулся на его блок кода, чтобы ответить на математическую задачу: «Какова сумма всех чисел? от 0 до 100? Очевидно, это был вопрос, который Гаусс получил, когда его учитель хотел занять его.

Sweigart использовал петлю for и функцию range(), чтобы получить ответ:

total = 0
for num in range(101):
    total=total+num
print(total)

На странице позже он заявляет, что «вы можете использовать цикл while для того же, что и цикл for; циклы for более лаконичны».

Как бы этот оператор отображался в цикле while?

Я попытался заменить for на while, но получил ошибку: "имя 'num' не определено". Я также попытался настроить математическое уравнение суммирования, используя другой блок кода из другого форума, но полностью потерялся.

print('Gauss was presented with a math problem: add up all the numbers from 0 to 100. What was the total?')
a=[1,2,3,4,5,...,100]
i=0
while i< len(a)-1:
    result=(a[i]+a[i+1])/2
    print(result)
    i +=1

Затем я попытался настроить i в уравнении, которое зациклилось бы, пока каждое число не было добавлено, но застряло.

print('Gauss was presented with a math problem: add up all the numbers from 0 to 100. What was the total?')
i=0
while i<101:
    i=i+1
    a=i

Будет ли утверждение while слишком сложным, чтобы оправдать усилия?

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Цикл for более лаконичен. Обратите внимание, что нам нужна переменная counter, в данном случае i с циклом while. Это не значит, что мы не нуждаемся в них в цикле for, однако они хорошо интегрированы в синтаксис для более чистого кода.

i = 0
total = 0
while i < 101:
    total += i
    i += 1
print(total)

Синтаксис цикла for в Python также является эквивалентом foreach:

for eachItem in list:
# Do something
0 голосов
/ 09 января 2019

Ваш последний пример близок.

A for петля этой формы:

for x in range(N):
    # ...

можно заменить на while цикл следующим образом:

x = 0
while x < N:
    # ...
    x += 1  # equivalent to x = x + 1

Просто убедитесь, что вы оставили оставшийся код без изменений!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...