Resumo de Exercícios de Programação Python: Laços e Estruturas de Dados
Exercícios de Programação Python: Laços e Estruturas de Dados
Introdução
Python é uma linguagem muito utilizada no ensino universitário por sua sintaxe clara e sua vasta biblioteca padrão. Neste material, revisaremos padrões comuns de programação e problemas práticos típicos: geração de figuras no console, manipulação de listas aninhadas, operações com matrizes numéricas e aplicações simples de física e estatística. Cada seção inclui exemplos práticos, explicações passo a passo e exercícios propostos.
Definição: Uma lista aninhada é uma lista cujos elementos são, por sua vez, listas. É utilizada para representar matrizes ou tabelas em memória.
Geração de figuras e padrões com laços aninhados
Laços aninhados consistem em colocar um laço dentro de outro. O laço externo normalmente itera sobre linhas e o laço interno sobre colunas.
Princípio básico
- Laço externo: gerencia as linhas.
- Laço interno: gerencia os elementos de cada linha.
Definição: Um laço aninhado é uma estrutura onde uma iteração contém outra iteração dentro de seu corpo.
Exemplo: imprimir uma matriz de símbolos # com 3 linhas e 5 colunas.
for i in range(3):
for j in range(5):
print("#", end="")
print("")
Padrões tipo escada e triângulos
- Escada (crescente de asteriscos): cada degrau aumenta em comprimento.
- Escada rotacionada 90°: cada linha tem comprimento par múltiplo de acordo com o padrão.
Exemplo: escada não rotacionada com N degraus (cada degrau tem comprimento $2k$ para $k=1\ldots N$):
n = int(input("Número de degraus: "))
for k in range(1, n+1):
print("*" * (2*k))
Exemplo: pirâmide de altura $h$ feita com "#" (altura 4):
h = int(input("Altura: "))
for i in range(1, h+1):
print("#" * (2*i-1))
Definição: Uma pirâmide em console geralmente é representada com linhas cujo comprimento forma uma progressão aritmética ímpar: $1,3,5,\dots$.
Pirâmide invertida (função com laços aninhados)
Implementação como função que recebe a altura e desenha a pirâmide invertida:
def piramide_invertida(h):
for i in range(h, 0, -1):
print("#" * (2*i-1))
h = int(input("Altura: "))
piramide_invertida(h)
## Padrões numéricos e séries
### Triângulos de números crescentes
Padrão 1 (linhas 1..N, cada linha exibe 1..k):
```python
n = int(input("Número de linhas: "))
for i in range(1, n+1):
print(" ".join(str(j) for j in range(1, i+1)))
Padrão 2 (números consecutivos nas linhas):
n = int(input("Número de linhas: "))
cont = 1
for i in range(1, n+1):
fila = []
for j in range(i):
fila.append(str(cont))
cont += 1
print(" ".join(fila))
Fatoriais e somatórios
- O fatorial de $k$ é definido como $k! = 1\cdot2\cdots k$.
- Para calcular a soma $1! + 2! + \dots + N!$:
from math import factorial
N = int(input("Digite N: "))
s = sum(factorial(i) for i in range(1, N+1))
print(s)
Definição: O fatorial $n!$ é o produto dos inteiros positivos de 1 até $n$.
Os N primeiros primos
Algoritmo simples (crivo básico por teste de divisão):
def es_primo(x):
if x < 2: return False
i = 2
while i*i <= x:
if x % i == 0:
return False
i += 1
return True
N = int(input("Quantidade de primos: "))
primos = []
num = 2
while len(primos) < N:
if es_primo(num):
primos.append(num)
num += 1
print(primos)
## Trabalhando com listas aninhadas (matrizes)
Embora não entremos em estruturas avançadas, vimos operações comuns com listas aninhadas: percorrer, modificar elementos e calcular médias por linha.
Exemplo: converter saltos de metros para centímetros e calcular médias por atleta e global:
```python
saltos = [[2.04,1.74,2.42],[3.43,2.14,2.02],[1.04,1.62,2.31]]
# converter para cm
for i in range(len(saltos)):
for j in range(len(saltos[i])):
saltos[i][j] = saltos[i][j] * 100
# média por atleta
for i in range(len(saltos)):
print(f"A média do atleta {i} é {sum(saltos[i]) / len(saltos[i])} cm")
# mé
Já tem uma conta? Entrar
Python - Padrões e Problemas
Klíčové pojmy: Laços aninhados: externo para linhas e interno para colunas, Imprimir pirâmide: comprimentos ímpares $1,3,5,\dots$, Pirâmide invertida: iterar de h até 1, Escada com asteriscos: cada degrau pode ter comprimento $2k$, Converter unidades e médias em listas aninhadas, Calcular soma de fatoriais com math.factorial, Encontrar N primos por teste de divisão incremental, Tempo de voo ideal $t_{vuelo}=\dfrac{2 v_{y,0}}{g}$, Maximizar o alcance testando ângulos de 0 a 90°, Fórmulas dos mínimos quadrados para $m$ e $b$, Matriz com borda de uns: condicionais em laços, Percorrer e modificar listas aninhadas com índices