Все здесь проделали хорошую работу, объясняя, как сделать это правильно. Я просто хочу объяснить, что ты делаешь неправильно.
if i / 3 == True
Эквивалентно:
if i / 3 == 1
Потому что True == 1. Таким образом, вы проверяете, действительно ли i при делении на 3 равно 1. Ваш код на самом деле напечатает 3 4 5.
Я думаю, что вы хотели сделать, чтобы проверить, является ли я кратным 3. Например:
if i % 3 == 0
Конечно, вы можете использовать оператор if для этого. Или вы можете использовать понимание списка с if
[x for x in range(20) if x % 3 == 0]
Тем, кто голосует против, из документации по питону :
Логическими значениями являются два константных объекта False и True. Они используются для представления истинных значений (хотя другие значения также можно считать ложными или истинными). В числовом контексте (например, при использовании в качестве аргумента арифметического оператора) они ведут себя как целые числа 0 и 1 соответственно.