CharlesTheZouch
CharlesTheZouch

Reputation: 73

Unexpected loop output

This code outputs 00000000 but I would think it would output 00000011, since the last 2 indexes meet the if criteria.

import pygame
numbers = [pygame.Color("#FFFFFF"),
            pygame.Color("#FFFFFF"),
            pygame.Color("#FFFFFF"),
            pygame.Color("#FFFFFF"),
            pygame.Color("#FFFFFF"),
            pygame.Color("#FFFFFF"),
            pygame.Color("#FF0000"),
            pygame.Color("#FF0000")]

x = 0
binary = ""
for number in numbers:
    print(number)
    if numbers[x] == pygame.Color("#FF0000"):
        binary += "1"
    elif numbers[x] == pygame.Color("#FFFFFF"):
        binary += "0"
print("after: ", binary)  

Upvotes: 0

Views: 42

Answers (2)

toom501
toom501

Reputation: 354

if you want to use the index you can change the code like this:

binary = ""
for x, number in enumerate(numbers):
    print(number) # number = numbers[x]
    if numbers[x] == pygame.Color("#FF0000"):
        binary += "1"
    elif numbers[x] == pygame.Color("#FFFFFF"):
        binary += "0"
print("after: ", binary)  

Upvotes: 0

iz_
iz_

Reputation: 16633

Change your loop to this:

for number in numbers:
    print(number)
    if number == pygame.Color("#FF0000"):
        binary += "1"
    elif number == pygame.Color("#FFFFFF"):
        binary += "0"

numbers[x] will always point to the first element, as you aren't incrementing x. So, change numbers[x] to number.

Upvotes: 1

Related Questions