Listas &
Laços
Guardar vários valores de uma vez e fazer o computador repetir tarefas por nós — em Python e JavaScript.
Guardar vários valores de uma vez e fazer o computador repetir tarefas por nós — em Python e JavaScript.
Entender o que é uma lista (Python) / array (JS)
Criar, acessar e modificar listas nas duas linguagens
Usar os laços for e while corretamente
Combinar lista + repetição para resolver problemas reais
Imagine que o professor precisa fazer a chamada:
Isso é exatamente o que faremos hoje — em duas linguagens.
Uma coleção ordenada de valores guardada em uma única variável. Cada item tem um índice começando em 0.
alunos = ["Ana", "Bruno", "Carla", "Diego"]
print(alunos[0]) # Ana
print(alunos[2]) # Carla
print(alunos[-1]) # Diego (último)
let alunos = ["Ana", "Bruno", "Carla", "Diego"];
console.log(alunos[0]); // Ana
console.log(alunos[2]); // Carla
console.log(alunos.at(-1)); // Diego (último)
Se eu quiser imprimir "Bruno", qual índice eu uso? E em JS, o que muda?
notas = [7, 8, 6]
notas.append(9) # adiciona no final
notas.remove(6) # remove pelo valor
len(notas) # tamanho → 3
# [7, 8, 9]
let notas = [7, 8, 6];
notas.push(9); // adiciona no final
notas = notas.filter(n => n !== 6); // remove pelo valor
notas.length; // tamanho → 3
// [7, 8, 9]
append ↔ push · len(lista) ↔ lista.length. Remoção pelo valor em JS não tem método direto — usamos filter.
Situação: Monte a lista de presença do dia. Um aluno atrasado chega, outro sai mais cedo.
presentes = [ ... ] # 4 nomes
presentes.append( ... )
presentes.remove( ... )
print(presentes)
print(len(presentes))
print(presentes[0])
print(presentes[-1])
let presentes = [ ... ]; // 4 nomes
presentes.push( ... );
presentes = presentes.filter(n => n !== ...);
console.log(presentes);
console.log(presentes.length);
console.log(presentes[0]);
console.log(presentes.at(-1));
Percorre cada item de uma lista automaticamente.
alunos = ["Ana", "Bruno", "Carla"]
for nome in alunos:
print("Presente?", nome)
let alunos = ["Ana", "Bruno", "Carla"];
for (let nome of alunos) {
console.log("Presente?", nome);
}
"para cada nome dentro de alunos, faça…"
Quantas vezes o print / console.log vai executar se eu adicionar mais 2 alunos?
Situação: 5 notas. Descubra quem passou (≥ 6) e conte o total de aprovados.
notas = [7.5, 4.0, 8.2, 5.9, 9.1]
aprovados = 0
for nota in notas:
if ... :
print("Aprovado ✅", nota)
aprovados = ...
else:
print("Reprovado ❌", nota)
print("Total aprovados:", aprovados)
let notas = [7.5, 4.0, 8.2, 5.9, 9.1];
let aprovados = 0;
for (let nota of notas) {
if (...) {
console.log("Aprovado ✅", nota);
aprovados = ...;
} else {
console.log("Reprovado ❌", nota);
}
}
console.log("Total aprovados:", aprovados);
Repete enquanto uma condição for verdadeira.
contador = 1
while contador <= 3:
print("Rodada", contador)
contador = contador + 1
let contador = 1;
while (contador <= 3) {
console.log("Rodada", contador);
contador = contador + 1;
}
Situação: Sistema de senha do Wi-Fi — até 3 tentativas.
senha_correta = "consa2026"
tentativas = 0
while tentativas < 3:
senha = input("Digite a senha: ")
if senha == senha_correta:
print("✅ Acesso liberado!")
break
else:
tentativas += 1
print("❌ Restam:", 3 - tentativas)
const senhaCorreta = "consa2026";
let tentativas = 0;
while (tentativas < 3) {
let senha = prompt("Digite a senha:");
if (senha === senhaCorreta) {
console.log("✅ Acesso liberado!");
break;
} else {
tentativas += 1;
console.log("❌ Restam:", 3 - tentativas);
}
}
notas = [7.5, 8.0, 6.5, 9.0]
soma = 0
for nota in notas:
soma = soma + nota
media = soma / len(notas)
print("Média:", media)
let notas = [7.5, 8.0, 6.5, 9.0];
let soma = 0;
for (let nota of notas) {
soma = soma + nota;
}
let media = soma / notas.length;
console.log("Média:", media);
Padrão clássico: acumulador → somatório → divisão. A lógica é idêntica nas duas linguagens.
carrinho = [19.90, 5.50, 42.00]
total = 0
for preco in carrinho:
total += preco
print("Total: R$", total)
let carrinho = [19.90, 5.50, 42.00];
let total = 0;
for (let preco of carrinho) {
total += preco;
}
console.log("Total: R$", total);
Mesma estrutura: uma lista + um for passando por ela. Muda só o que acontece dentro.
Crie uma lista com 5 frutas e imprima cada uma. Faça em Python e JS.
Dada uma lista de idades, conte quantas pessoas são maiores de 18.
Peça 5 nomes (input/prompt), guarde numa lista e imprima.
alunos = []
for i in range(5):
nome = input("Nome: ")
alunos.append(nome)
print(alunos)
let alunos = [];
for (let i = 0; i < 5; i++) {
let nome = prompt("Nome:");
alunos.push(nome);
}
console.log(alunos);
Peça o nome de 3 alunos e suas notas
Guarde em duas listas (nomes e notas)
Mostre a média da turma
Informe quem ficou acima da média
nomes = []
notas = []
# use for + input() + append() + len()...
let nomes = [];
let notas = [];
// use for + prompt() + push() + .length...
append/push, remove/filter, len/lengthfor x in vs for ... of)Listas dentro de listas (matrizes) e problemas clássicos da OBI!
Das duas sintaxes de for, qual ficou mais clara pra você? Qual você usaria numa prova da OBI?