Satisfação aspira! Bem vindo ao Marrs Guia TECH.

Vamos abordar 2 conceitos hoje que é o FOR para laço de repetição e a LISTA como a alternativa para gerar matriz (ou array).

O que acontece é que todo array é composto de 2 elementos: a posição e o valor e o laço FOR no Python é declarado com a palavra ‘in’ (ex. for v in range(0,10)), o que vem depois precisa ser a definição da condição de repetição e nesse sentido você pode inserir a lista como parâmetro da condição.

Para tentar ficar mais claro, leia da seguinte forma: para v em intervalo de 0 até 10 (do exemplo).

Então, se eu escrever: 'para v em lista', significa que quero que ‘v’ tenha o valor de cada posição dentro de uma lista em cada interação.

Vai ficar mais fácil com o exemplo a seguir, então BORA.

Como sempre:

  • Não copie e cole, escreva o código
  • Não se limite ao exemplo, experimente
  • Tente entender o que está acontecendo

 

"""Vamos trabalhar com uma matriz BI DIMENSIONAL ou seja, uma matriz dentro de outra e para isso vamos usar ‘lista’.

  Como vamos carregar os valores na lista, vamos fazer isso usando o laço de repetição 'for'.

  Primeiro vamos definir 3 variáveis como matrizes do tipo lista:

"""

veiculos = []

carros = []

motos = []

#A ideia é criar uma lista de veículos que contenham carros e motos separadamente.

#Você pode definir a quantidade de entradas que fará em cadas lista específica

for i in range(0,2): #entraremos com 2 carros

   carros.append(input("Nome do carro:"))

 

for i in range(0,3): #Entraremos com 3 motos

   motos.append(input("Nome da moto:"))

  

# uma variável do tipo lista tem a função append que insere 1 registro por vez, acima fizemos em loop com o for

# e abaixo vamos criar a matriz bí dimensional, inserindo as matrizes já carregadas na matriz veículo. Uma a uma.

 

veiculos.append(carros)

veiculos.append(motos

 

#agora veja o resultado do que tem dentro da matriz como um todo. deve sair algo como [['ka', 'gol'], ['mirage', 'cbx', 'ybr']]

 

print(veiculos)

print("-@-"*30)

 

#Esse loop está carregando 'v' com a matriz de contida  em cada posição dada matriz principal

for v in veiculos:

   print(v) #se existem 2 variáveis então haverá 2 impressões do conteúdo de cada matriz.

print("-@-"*30)

#Agora vamos adicionar mais um carro e mais uma moto

for i in range(0,1):

   carros.append(input("Digite o nome de mais 1 carro:"))

 

for i in range(0,1):

   motos.append(input("Digite o nome de mais 1 moto:"))

#peceba que carros tinha as posiçoes 0 e 1, com o append() agora tem 0,1 e 2 e a mesma lógica vale para motos   

  

#Certo, agora precisamos colocar as matrizes atualizadas dentro de veiculos, mas se usar o append() diretamente

#então você tera mais 2 posições, ficando errado.

veiculos.clear() #a função clear na lista vai limpar as posições deixando a matriz sem nada.

veiculos.append(carros)

veiculos.append(motos

#Matriz veiculos recarregada.

 

#Agora quero imprimir só o nome dos veículos um a um e então vou mostrar a complexidade e a praticidade

#Primeira forma de imprimir um loop dentro do outro.

print("Imprimindo veículos")

for i in range(0, len(veiculos)): #a função len() devolve a quantidade de posições de uma matriz e i vai receber a posição

   for c in veiculos[i]: #Observe, agora c não vai receber a posição, pois estou solicitando o ‘valor’ contido em cada passagem do loop

       print("a - Veiculo: ", c)

  

         

print("-@-"*20#repita 10 vezes -@-  

 

   

for v in veiculos: #observe agora. v receberá posição e valor de veículos de uma só vez

  for c in v: # agroa c recebe a posição e o conteúdo de v em cada passagem do loop

       print("b - Veículo: ", c)          

      

#para o desafio, pegue o exemplo e crie mais uma lista leilao=[] e através do for, faça o append() de todos os

#veículos dentro de uma lista única, depois experimente imprimir tudo usando a função sorted().

     

E aí? É um pouco complexo, mas se você fragmentar cada parte, testar com outras coisas você vai perceber que a manipulação de listas de forma encadeada e usando for podem ser bem práticas.

Um exemplo aplicável é para gerar o resultado de torneios de jogos distintos. Imagine que são vários jogos com vários jogadores que terão suas pontuações e você precisa juntar tudo para criar uma listagem disso…(Dá para você tentar simular, que tal?)

Se precisar de ajuda deixe nos comentários.