Как вывести только чётные/нечётные числа из списка?

Начал учить питон, нужно вывести все чётные/нечётные числа от 1 до введённого(input), на экран. Пытался "вырвать" числа через одно, но выдаёт ошибку "builtins.TypeError: 'int' object is not subscriptable". Искал в интернете, как выводить только чётные/нечётные числа, ничего в моей ситуации не подошло. Заранее спасибо добрым людям за помощь!

n = int(input())
k = int(input())
if k == 1:
    for i in range(1, n + 1):
        print(i[:1], end=' ')

Ответы (3 шт):

Автор решения: MarianD

Вы, наверно, имели в виду

n = int(input())

for i in range(1, n + 1, 2):
    print(i, end=' ')

Заметьте параметр 2 в функции range().

(Т.к. i целое число, а не список, невозможно к нему применить отрезок [:1], как вы сделали в своей программе и что вызвало ошибку.
Для версии с применением отрезка см. конец этого ответа.)


Объяснение:

Число 2 как 3-ий параметр в функции range(1, n + 1, 2) определяет шаг, т.е. она будет выдавать

  • каждый 2-ой элемент из диапазона 1, 2, 3, ... n

т.е. числа 1, 3, 5, и т.д.

Когда бы вы хотели выводить наоборот четные числа, примените range(2, n + 1, 2).


Примечание:

Может быть, что вы хотели сначала из range(1, n + 1) сделать список, чтобы была возможность применить отрезки ([]):

n = int(input())
lst = list(range(1, n + 1))
print(lst[::2]) 

Отрезки подобны функции range() ([откуда:докуда:шаг]) - я пропустил «откуда» и «докуда», чтобы применить только «шаг» (на весь список).

(Для вывода четных чисел вместо range(1, n + 1) примените range(2, n + 1).)

→ Ссылка
Автор решения: Roman Supreme

Для четных чисел:

f = int(input())
for i in range(1, f)
if i % 2 == 0:
   print(i, end = ' ')

Для нечетных чисел:

f = int(input())
for i in range(1, f)
if i % 2 != 0:
   print(i, end = ' ')
→ Ссылка
Автор решения: Dias Otaboev
for number in range(1, 21, 2):
    print(number)

вывод:

1
3
5
7
9
11
13
15
17
19
→ Ссылка