Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Inversão de vetor

Olá Estou tentando fazer a inversão de um vetor ja declarado, porem quando rodo ele me da um erro (Traceback (most recent call last): File "<pyshell#54>", line 3, in vetor.append(n) AttributeError: 'int' object has no attribute 'append)

não sei oque estou fazendo de errado. Estou tentando fazer a inversão sem utilizar as funções de inverse ou sorte, ou como se diz própria mente (no arroz com feijão)

vetor = [30,  8,  1 , 7, 3]
while i <= 6:
    n = int(vetor)
    vetor.append(n)
    i += 1
    i = 5
    while i >=0:
        print(vetor[i])
        i -= 1
2 respostas
vetor = [30, 8, 1, 7, 3]
cont = 5
while cont <= 5:
    n = str(vetor)
    vetor.append(n)
    cont += 1
    print("vetor invertido \n ", vetor[::-1])

tentei da seguinte maneira e rodei no compilador e funcionou perfeitamente.

solução!

Olá Pedro,

Realmente o python sempre vai ter uma função pronta para cada coisa que você precisa, então é legal fazer esses desafios para treinar a lógica.

Um jeito de fazer esse desafio é utilizando a função pop() que retorna o último valor da lista e então remove esse valor da lista. Assim facilita muito nesse caso:

vetor = [30, 8, 1, 7, 3]

for i in range(0, len(vetor)):
  print(vetor.pop())

Lembrando que essa função vai alterar o valor de vetor e após executar o for o vetor vai estar vazio.


Ou para fazer um pouco mais "manual" do que utilizando a função pop() podemos utilizar índices negativos para acessar a lista, por exemplo vetor[-1] retorna o último valor do vetor, vetor[-2] retorna o penúltimo valor, e assim por diante:

# Utilizando while
vetor = [30, 8, 1, 7, 3]
cont = 1

while cont <= len(vetor):
  ultimo = vetor[-cont]
  print(ultimo)
  cont += 1
# Utilizando for
vetor = [30, 8, 1, 7, 3]

for i in range(1, len(vetor) + 1):
  ultimo = vetor[-i]
  print(ultimo)

Espero ter ajudado, qualquer dúvida ou ideia é só falar!