Fazer uma função para verificar se uma lista está ordenada ou não (a ordem pode ser crescente ou decrescente).

Passo 1

O enunciado pede pra gente criar uma função que receba uma lista e diga se ela está ordenada inteira (ou seja, totalmente crescente ou totalmente decrescente). Isso envolve usar estruturas de repetição pra comparar elementos adjacentes e usar variáveis booleanas pra indicar cada tipo de ordenação.

Passo 2

Como primeiro passo de fato, vamos lidar com o caso trivial: se a lista tiver zero ou um elemento, ela já está ordenada por definição, então retornamos True.

Passo 3

Depois, inicializamos duas flags, digamos is_crescente e is_decrescente, ambas como True. A ideia é ir “derrubando” a flag que não bate conforme encontramos pares que quebrem a ordem.

Passo 4

Em seguida, percorremos a lista de 0 até len(lista)–2 e, em cada iteração, comparamos elemento atual com o próximo. Se o atual for maior que o próximo, a lista não pode ser totalmente crescente, então fazemos is_crescente = False. Se for menor, não pode ser decrescente, então fazemos is_decrescente = False.

Passo 5

No final do laço, se pelo menos uma das duas flags ainda for True, isso significa que a lista estava inteira crescente ou inteira decrescente. Retornamos então is_crescente or is_decrescente.

Resposta

def verificar_ordenacao(lista):
# caso trivial: listas de tamanho 0 ou 1 são consideradas ordenadas
if len(lista) < 2:
return True
is_crescente = True
is_decrescente = True

# percorre pares de vizinhos e ajusta as flags
for i in range(len(lista) - 1):
    if lista[i] > lista[i + 1]:
        is_crescente = False
    if lista[i] < lista[i + 1]:
        is_decrescente = False

# se uma das flags permanecer True, a lista está ordenada
return is_crescente or is_decrescente

Exercícios relacionados