Moaz
Moaz

Reputation: 11

Using conditional statements in while loop

I was under the impression that adding the following if statement in my while loop makes python pick only the odd values of i that are smaller than 7 and sums them. However, this is not the case.

Here's my code:

i = 0

sum = 0

while i < 7:

    if (i % 2) == 1:

        sum += i

        i += 1

I expect sum to be 9 but an infinite loop occurs, causing the sum to be infinite.

I can't seem to understand how. Any help is appreciated. Thanks in advance!

Upvotes: 1

Views: 197

Answers (3)

Robot Mind
Robot Mind

Reputation: 321

For similar cases it is better to use for loop than while loop. Especially if you have long loops. link

sum = 0
for i in range(7):
    if (i % 2) == 1:
        sum += i

Upvotes: 0

U13-Forward
U13-Forward

Reputation: 71620

As you keep conditioning i % 2, but if it doesn't go through, the i never changes, it will always exit the if statement, to solve it:

i = 0

sum = 0

while i < 7:

    if (i % 2) == 1:

        sum += i

    i += 1

print(sum)

You have to unindent by 4 spaces your i += 1 line.

Upvotes: 0

Adam.Er8
Adam.Er8

Reputation: 13413

You only increment i inside the if, so if the condition is not meant, i stays the same forever

i = 0

sum = 0

while i < 7:

    if (i % 2) == 1:

        sum += i

    i += 1

print(sum)

Output:

9

Upvotes: 1

Related Questions