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é
Regista-te para o resumo completo
FlashcardsTeste de conhecimentoResumoPodcastMapa mental
Começar grátis

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

## 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. ```python 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$): ```python 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): ```python 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: ```python 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): ```python 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!$: ```python 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): ```python 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é