Как вычислить наибольшее число кратное 2?

a = range(0, 1000000)
if a % 2 == 0:
    a = d
    print(max(d))    

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

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

Если прямо вот так в лоб, не анализируя, что за последовательность на входе, то вот так:

print(max(a for a in range(0,1000000) if a%2 == 0))

Функции max нужно передать последовательность, из которой она выберет максимальный элемент.

По хорошему то, конечно, нужно идти с конца, и вообще можно сделать гораздо проще в данном случае, просто отняв остаток от деления на 2 от верхней границы диапазона:

n = 1_000_000 - 1
print(n - n % 2)
→ Ссылка
Автор решения: Анастасия

По-моему, сработает, если создать цикл по убыванию и проверять каждое число на кратность двум

for i in range(1000000-1, 0, -1):
    if i%2 == 0:
        print(i)
        break
→ Ссылка
Автор решения: insolor
a = range(0, N)
print(next(reversed(a))//2*2)

reversed от range не вычисляет все значения, а грубо говоря переставляет местами параметры range, поэтому даже для больших N считает мгновенно:

In [1]: N = 10**100                                                             

In [2]: a = range(0, N)                                                         

In [3]: %timeit next(iter(a))                                                   
134 ns ± 0.164 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

In [4]: %timeit next(reversed(a))                                               
278 ns ± 0.226 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
→ Ссылка
Автор решения: Jack_oS
n = int(input())
max_even = n-1 if n%2 else n

print(max_even)

вывод max_even:

>? 13
12

>? 42
42
→ Ссылка