Написать код в одну строчку

Как этот код можно написать в одну строчку?

    a = int(input())
    for i in range(3): print(a+i)

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

Автор решения: OPTIMUS PRIME
for k in range(a := int(input()), a + 3): print(k)

:= — оператор, допускающий присваивание внутри выражений. Присваивает значение переменной и возвращает это значение.

https://www.python.org/dev/peps/pep-0572/#syntax-and-semantics

(для версий 3.8+)



a = int(input()); [print(a + i) for i in range(3)]

; позволяет на одной строчке разместить несколько несоставных инструкций.

for (...): ляляля — состоит из двух частей, поэтому не поместится на одной строчке с другой инструкцией. Поэтому использован сгенерированный список.



Немного извращений в придачу:

for k in range( *(lambda a: (a, a + 3))( int(input()) ) ): print(k)

lambda a: (a, a + 3) — Функция, возвращает кортеж из двух чисел.
(lambda a: (a, a + 3))( int(input()) ) — сразу же вызывается с аргументом int(input()), параметр a получает введенное значение.
* — полученный кортеж распаковывается, элементы попадают в генератор range в виде аргументов, как если бы вызвали range(*(a, a + 3))range(a, a + 3)

→ Ссылка
Автор решения: extrn
for i, _ in enumerate(range(3), int(input())): print(i)

И даже одним выражением

any(print(i) for i, _ in enumerate(range(3), int(input())))

Но зачем?

→ Ссылка