DEV Community

Gustavo Medeiros
Gustavo Medeiros

Posted on

Problema HackerRank em Python - Base Data Types Lists

Este código em Python é projetado para executar uma série de operações em uma lista com base em comandos fornecidos pelo usuário. Vamos analisar o código passo a passo para entender seu funcionamento:

if __name__ == '__main__':
    N = int(input())
    l = []
    while(N>0):
        cmd_l = input().split()
        if(len(cmd_l) == 3 and cmd_l[0] == "insert"):
            #insert statement
            l.insert(int(cmd_l[1]),int(cmd_l[2]))
        elif(len(cmd_l) == 2 and (cmd_l[0] == "remove" or cmd_l[0] == "append")):
            if(cmd_l[0] == "remove"):
                l.remove(int(cmd_l[1]))
            elif(cmd_l[0] == "append"):
                l.append(int(cmd_l[1]))
        elif(len(cmd_l) == 1):
            if(cmd_l[0] == "sort"):
                l.sort()
            elif(cmd_l[0] == "reverse"):
                l.reverse()
            elif(cmd_l[0] == "pop"):
                l.pop()                
            elif(cmd_l[0] == "print"):
                print(l)
        N -= 1
Enter fullscreen mode Exit fullscreen mode

if __name__ == '__main__':

  • Essa linha verifica se o script está sendo executado diretamente. Pratica adotada para garantir que o código dentro deste bloco só será executado se o arquivo for o ponto de entrada do programa.

N = int(input())

  • O programa espera que o usuário insira um número inteiro que é armazenado na variável N. Este número representa quantas operações o usuário vai realizar.

l = []

  • Lista vazia l usada para armazenar os elementos conforme as operações forem sendo realizadas.

while(N>0):

  • Um loop while é iniciado que continuará executando enquanto N for maior que 0. isso significa que o loop executará N vezes, uma vez para cada operação que o usuário desejar realizar.

cmd_l = input().split()

  • Dentro do loop o programa espera que o usuário insira uma linha de texto, que é dividida em uma lista de strings (cmd_l) usando o método split(). Cada elemento da lista cmd_l representa uma parte da operação a ser realizada.

if(len(cmd_l) == 3 and cmd_l[0] == "insert"):

  • Esta linha verifica se a operação é um comando de "insert" com três partes (cmd_l deve ter comprimento 3 e o primeiro elemento deve ser "insert").

l.insert(int(cmd_l[1]),int(cmd_l[2]))

  • Se a condição acima for verdadeira, o método insert da lista l é chamado. Os argumentos são convertidos de string para inteiro: cmd_l[1] é a posição onde o elemento será inserido, e cmd_l[2] é o elemento a ser inserido.

elif(len(cmd_l) == 2 and (cmd_l[0] == "remove" or cmd_l[0] == "append")):

  • Esta linha verifica se a operação é um comando de "remove" ou "append" com duas partes cmd_l deve ter comprimento 2 e o primeiro elemento deve ser "remove" ou "append".

if(cmd_l[0] == "remove"):
l.remove(int(cmd_l[1]))
elif(cmd_l[0] == "append"):
l.append(int(cmd_l[1]))

  • Dependendo do comando(remove ou append), o método correspondente da lista l é chamado. Para remove, o elemento cmd_l (convertido para inteiro) é removido da lista. Para append, o elemento cmd_l[[1](convertido para inteiro) é adicionado ao final da lista.

elif(len(cmd_l) == 1):

  • Verifica se a operação é um comando com uma única parte (cmd_l deve ter comprimento 1).

if(cmd_l[0] == "sort"):
l.sort()
elif(cmd_l[0] == "reverse"):
l.reverse()
elif(cmd_l[0] == "pop"):
l.pop()
elif(cmd_l[0] == "print"):
print(l)

  • Dependendo do comando(sort, reverse, pop, ou print), o método correspondente da lista l é chamado. sort ordena a lista, reverse inverte a ordem dos elementos, pop remove o último elemento, e print imprime a lista.

N -= 1

  • No final do loop, N é decrementado em 1, indicando que uma operação foi realizada. Isso continua até que N seja 0, quando o loop termina.

Top comments (0)