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
# 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