Problema HackerRank em Python - Base Data Types Lists
Gustavo Medeiros
Posted on September 4, 2024
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
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 enquantoN
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étodosplit()
. Cada elemento da listacmd_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 listal
é chamado. Os argumentos são convertidos de string para inteiro:cmd_l[1]
é a posição onde o elemento será inserido, ecmd_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
ouappend
), o método correspondente da listal
é chamado. Pararemove
, o elementocmd_l
(convertido para inteiro) é removido da lista. Paraappend
, o elementocmd_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
, ouprint
), o método correspondente da listal
é chamado.sort
ordena a lista,reverse
inverte a ordem dos elementos,pop
remove o último elemento, eprint
imprime a lista.
N -= 1
- No final do loop,
N
é decrementado em 1, indicando que uma operação foi realizada. Isso continua até queN
seja 0, quando o loop termina.
Posted on September 4, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.