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.