Использование условных операторов в цикле while - PullRequest
1 голос
/ 25 июня 2019

У меня сложилось впечатление, что добавление следующего оператора if в мой цикл while заставляет python выбирать только нечетные значения i, меньшие 7, и суммировать их.Однако это не тот случай.

Вот мой код:

i = 0

sum = 0

while i < 7:

    if (i % 2) == 1:

        sum += i

        i += 1

Я ожидаю, что сумма равна 9, но происходит бесконечный цикл, в результате чего сумма становится бесконечной.

Я не могу понять, как.Любая помощь приветствуется.Заранее спасибо!

Ответы [ 3 ]

1 голос
/ 25 июня 2019

Вы только увеличиваете i внутри if, поэтому, если условие не подразумевается, i остается неизменным навсегда

i = 0

sum = 0

while i < 7:

    if (i % 2) == 1:

        sum += i

    i += 1

print(sum)

Вывод:

9

0 голосов
/ 25 июня 2019

Для подобных случаев лучше использовать цикл, чем цикл. Особенно если у вас длинные петли. ссылка

sum = 0
for i in range(7):
    if (i % 2) == 1:
        sum += i
0 голосов
/ 25 июня 2019

Пока вы сохраняете условие i % 2, но если оно не пройдет, i никогда не изменится, оно всегда выйдет из оператора if, чтобы решить его:

i = 0

sum = 0

while i < 7:

    if (i % 2) == 1:

        sum += i

    i += 1

print(sum)

Вы должны удалить 4 строки вашей строки i += 1.

...