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.

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs