So I’m trying to make a list of numbers that are multiples of 3, this is my code:

multiples_of_3 = []
for value in range(3, 31):
    number = value % 3 == 0
    multiples_of_3.append(number)

print(multiples_of_3)

But it transforms the results into booleans, which throws me a list with false and trues instead of numbers, what I’m doing wrong? I know comprehension lists exist and that this could be done more efficiently but well, I’m trying to learn and writing it as a comprehension list doesn’t make it easier.

  • gears@lemmy.world
    link
    fedilink
    arrow-up
    1
    ·
    1 year ago

    It’s because the number variable is a boolean, equal to “is value % 3 zero?”. You’re appending that result to the list for every number.

    What you want is:

    multiples_of_3 = []
    for value in range(3, 31):
        if value % 3 == 0:
            multiples_of_3.append(value)
    
    print(multiples_of_3)
    

    The if statement means that you only append to the list if it’s a multiple.