📘 Exercícios — Capítulo 5#

Organizando a Informação#

← Voltar

5.3 Processando uma Lista#

ExercĂ­cio 5.1#

Escreva um programa que receba uma lista de temperaturas em Celsius e escreva na tela o resultado da conversão dessas temperaturas em Fahrenheit. (Não se esqueça de usar a fórmula correta!)

Ver solução

Exercício — Temperatura em Fahrenheit#

# Programa que recebe uma lista de temperaturas em Celsius e escreve
# na tela o resultado da conversĂŁo dessas temperaturas em Fahrenheit.

def celsius_para_fahrenheit(celsius):
    return (celsius * 9/5) + 32

temperaturas_celsius = [0, 20, 37, 100]
temperaturas_fahrenheit = [celsius_para_fahrenheit(temp) for temp in temperaturas_celsius]

print("Temperaturas em Fahrenheit:")
for i in range(len(temperaturas_celsius)):
    print(f"{temperaturas_celsius[i]}°C = {temperaturas_fahrenheit[i]}°F")
print()

Exercício 5.2 — Fahrenheit invertido#

Reescreva o programa 5.13 de modo a imprimir o resultado a partir do Ășltimo elemento (de 300 para 0).

Programa 5.13 original:

print('Tabela de conversĂŁo de Fahrenheit para Celsius')
for fahr in range(0, 301, 20):
    celsius = (5/9) * (fahr - 32)
    print('{:>5d} -> {:>5.1f}'.format(fahr, celsius))
Ver solução

Exercício — Fahrenheit invertido#

# Tabela de conversĂŁo Fahrenheit para Celsius, de 300 para 0

print('Tabela de conversĂŁo de Fahrenheit para Celsius')
for fahr in range(300, -1, -20):
    celsius = (5 / 9) * (fahr - 32)
    print('{:>5d} -> {:>5.1f}'.format(fahr, celsius))

ExercĂ­cio 5.3 — Fahrenheit com try…except#

Reescreva o programa 5.14 validando a entrada de dados do usuĂĄrio, usando a estrutura try…except.

Ver solução

ExercĂ­cio — Fahrenheit com try…except#

# Tabela Fahrenheit para Celsius com validação usando try...except

def fahr_para_celsius(f):
    """Converte temperaturas Fahrenheit para Celsius."""
    return (5 / 9) * (f - 32)

def cria_tabela_celsius(fahr):
    """Cria tabela Celsius a partir de tab Fahr."""
    celsius = [None] * len(fahr)
    for i, temp in enumerate(fahr):
        celsius[i] = fahr_para_celsius(fahr[i])
    return celsius

def main():
    """Programa principal."""
    while True:
        try:
            inicio = int(input('Qual o inĂ­cio das temperaturas Fahrenheit? '))
            fim = int(input('Qual o final das temperaturas Fahrenheit? '))
            passo = int(input('Qual o passo das temperaturas Fahrenheit? '))
            if passo == 0:
                print('O passo nĂŁo pode ser zero.')
                continue
            break
        except ValueError:
            print('Valor invĂĄlido. Digite um nĂșmero inteiro.')

    fahr = range(inicio, fim + 1, passo)
    celsius = cria_tabela_celsius(fahr)
    print('Tabela de conversĂŁo de Fahrenheit para Celsius')
    for i, temp in enumerate(fahr):
        print('{:>5d} -> {:>5.1f}'.format(temp, celsius[i]))

main()

Exercício 5.4 — Fahrenheit com while#

Reescreva o Programa 5.13 usando o comando while.

Ver solução

Exercício — Fahrenheit com while#

# Tabela de conversĂŁo Fahrenheit para Celsius usando while

print('Tabela de conversĂŁo de Fahrenheit para Celsius')
fahr = 0
while fahr <= 300:
    celsius = (5 / 9) * (fahr - 32)
    print('{:>5d} -> {:>5.1f}'.format(fahr, celsius))
    fahr += 20

Exercício 5.5 — Ímpares para pares#

Crie uma lista com os nĂșmeros Ă­mpares entre 0 e 100 (use range()) e depois use o comando enumerate() para percorrer a lista transformando o valor de cada elemento no valor par subsequente.

Ver solução

Exercício — Ímpares para pares#

# Lista de Ă­mpares entre 0 e 100, transformando cada um no par subsequente

impares = list(range(1, 100, 2))
print('Ímpares originais:', impares)

for i, valor in enumerate(impares):
    impares[i] = valor + 1

print('Pares subsequentes:', impares)

Exercício 5.6 — Tabela de pi#

Modifique o Programa 4.23 que calcula pi para que este nĂŁo mais solicite o nĂșmero de pontos a serem gerados, mas gere uma tabela com ao menos 10 valores de pi calculados com nĂșmeros diferentes de pontos. Use range() para gerar os diversos valores de entrada da função.

Ver solução

Exercício — Tabela de pi#

# Tabela com 10 valores de pi calculados com diferentes nĂșmeros de pontos

import random as r
import math as m

def gera_coordenadas_aleatorias():
    """Gera par de coordenadas aleatĂłrias."""
    x = r.random()
    y = r.random()
    return x, y

def coordenadas_dentro_circulo(x, y):
    """Testa se coordenadas estĂŁo dentro do cĂ­rculo de raio 1."""
    return m.hypot(x, y) < 1

def calcula_pi(n):
    """Calcula pi e o erro associado a partir de n pontos."""
    conta_circulo = 0
    for i in range(n):
        x, y = gera_coordenadas_aleatorias()
        if coordenadas_dentro_circulo(x, y):
            conta_circulo += 1
    pi = 4 * conta_circulo / n
    erro = m.fabs(pi - m.pi)
    return pi, erro

print(f'{"Pontos":>10} {"Pi":>12} {"Erro":>12}')
print('-' * 36)
for n in range(100, 1100, 100):
    pi, erro = calcula_pi(n)
    print(f'{n:>10} {pi:>12.6f} {erro:>12.6f}')

5.4 Listas Por CompreensĂŁo#

Exercício 5.7 — Quadrado dos pares#

Escreva um programa para gerar uma lista com o quadrado dos nĂșmeros pares entre 10 e 20 (inclusive).

Ver solução

Exercício — Quadrado dos pares#

# Lista com o quadrado dos nĂșmeros pares entre 10 e 20 (inclusive)

quadrados = [x**2 for x in range(10, 21) if x % 2 == 0]
print(quadrados)

Exercício 5.8 — Quadrado dos ímpares com range#

Escreva um programa para gerar uma lista com o quadrado dos nĂșmeros Ă­mpares de 0 a 9, porĂ©m nĂŁo use filtros. Use apenas o comando range() para controlar a geração da sequĂȘncia de nĂșmeros Ă­mpares.

Ver solução

Exercício — Quadrado dos ímpares com range#

# Lista com o quadrado dos Ă­mpares de 0 a 9, usando apenas range()

quadrados = [x**2 for x in range(1, 10, 2)]
print(quadrados)

Exercício 5.9 — Cubos#

Escreva um programa que crie uma lista com o cubo dos nĂșmeros entre 1 e 10, ambos inclusive.

Ver solução

Exercício — Cubos#

# Lista com o cubo dos nĂșmeros entre 1 e 10 (inclusive)

cubos = [x**3 for x in range(1, 11)]
print(cubos)

ExercĂ­cio 5.10 — MĂșltiplos de 7#

Escreva um programa que crie uma lista com os 10 primeiros mĂșltiplos de 7.

Ver solução

ExercĂ­cio — MĂșltiplos de 7#

# Lista com os 10 primeiros mĂșltiplos de 7

multiplos = [7 * x for x in range(1, 11)]
print(multiplos)

5.5 Somando e Multiplicando Listas#

Exercício 5.11 — Rotação de lista#

Escreva um programa que dada a lista [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] gere a lista [5, 6, 7, 8, 9, 0, 1, 2, 3, 4].

Ver solução

Exercício — Rotação de lista#

# Dada [0,1,2,3,4,5,6,7,8,9] gera [5,6,7,8,9,0,1,2,3,4]

lista = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
resultado = lista[5:] + lista[:5]
print(resultado)

Exercício 5.12 — Ímpares e pares separados#

Escreva um programa que dada a lista [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] gere a lista [1, 3, 5, 7, 9, 0, 2, 4, 6, 8].

Ver solução

Exercício — Ímpares e pares separados#

# Dada [0,1,2,3,4,5,6,7,8,9] gera [1,3,5,7,9,0,2,4,6,8]

lista = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
resultado = lista[1::2] + lista[0::2]
print(resultado)

5.6 Extraindo Sublistas#

Exercício 5.13 — Fatiamento#

Dada a lista [10, 2, 32, 14, 35, 46, 17, 58, 199, 19], escreva um programa que imprima:

  1. os elementos de Ă­ndices pares;
  2. os elementos de Ă­ndices Ă­mpares;
  3. os elementos entre os Ă­ndices 2 (inclusive) e 4 (exclusive);
  4. o elemento de índice 1 e depois os elementos distantes 3 posiçÔes a partir de 1, até o final.
Ver solução

Exercício — Fatiamento#

# OperaçÔes de fatiamento sobre a lista dada

lista = [10, 2, 32, 14, 35, 46, 17, 58, 199, 19]

print('1. Elementos de Ă­ndices pares:', lista[::2])
print('2. Elementos de Ă­ndices Ă­mpares:', lista[1::2])
print('3. Elementos entre Ă­ndices 2 (inclusive) e 4 (exclusive):', lista[2:4])
print('4. Elemento de índice 1, depois distantes 3 posiçÔes:', lista[1::3])

Exercício 5.14 — Fatiamento negativo#

Gere uma lista com 100 nĂșmeros de 0 a 99, com o comando range() e, usando valores negativos no fatiamento, escreva um programa que imprima:

  1. o Ășltimo elemento da lista original e depois, decrescendo, os elementos distantes 3 posiçÔes a partir do final atĂ© o inĂ­cio;
  2. os elementos entre o Ă­ndice 87 (inclusive) e o Ă­ndice 34 (exclusive), em ordem decrescente de Ă­ndices;
  3. todos os elementos, exceto os dois Ășltimos.
Ver solução

Exercício — Fatiamento negativo#

# Fatiamento com valores negativos em lista de 0 a 99

lista = list(range(100))

print('1. Último elemento e decrescendo de 3 em 3:', lista[-1::-3])
print('2. Índice 87 atĂ© 34 (exclusive), decrescente:', lista[87:34:-1])
print('3. Todos exceto os dois Ășltimos:', lista[:-2])

Exercício 5.15 — Inverso com fatiamento#

Dada a lista [1, 2, 3, 4, 5, 6, 7], imprima seu inverso, ou seja, [7, 6, 5, 4, 3, 2, 1] usando apenas fatiamento.

Ver solução

Exercício — Inverso com fatiamento#

# Inverso de uma lista usando apenas fatiamento

lista = [1, 2, 3, 4, 5, 6, 7]
print(lista[::-1])

Exercício 5.16 — Planetas#

Considere a lista:

planetas = ['MercĂșrio', 'VĂȘnus', 'Terra', 'Marte', 'Saturno', 'JĂșpiter', 'Urano', 'Netuno']

Execute as seguintes operaçÔes usando apenas fatiamento. Cada item usa a lista resultante do item anterior.

  1. Insira a lista ['Fobos','Deimos'] na posição 4 da lista.
  2. Insira ['Sol'] na posição zero.
  3. Qual seria o fatiamento para imprimir ['Urano', 'JĂșpiter', 'Saturno', 'Deimos', 'Fobos', 'Marte', 'Terra', 'VĂȘnus'], nessa ordem?
Ver solução

Exercício — Planetas#

# OperaçÔes com fatiamento sobre lista de planetas

planetas = ['MercĂșrio', 'VĂȘnus', 'Terra', 'Marte', 'Saturno', 'JĂșpiter', 'Urano', 'Netuno']
print('Original:', planetas)

# 1. Inserir ['Fobos', 'Deimos'] na posição 4
planetas[4:4] = ['Fobos', 'Deimos']
print('ApĂłs inserir Fobos e Deimos:', planetas)

# 2. Inserir ['Sol'] na posição 0
planetas[0:0] = ['Sol']
print('ApĂłs inserir Sol:', planetas)

# 3. Fatiamento para ['Urano', 'JĂșpiter', 'Saturno', 'Deimos', 'Fobos', 'Marte', 'Terra', 'VĂȘnus']
print('Invertido do Ă­ndice 3 ao 10:', planetas[10:2:-1])

5.17 OperaçÔes em Listas#

Exercício 5.17 — append() com lista#

O que acontece se vocĂȘ chama o comando append() com outra lista? Considere a lista primos = [2, 3, 5, 7] e que vocĂȘ use o comando primos.append([23,29,31]). Tente imprimir o elemento primos[4]. O que Ă© impresso?

Ver solução

Exercício — append() com lista#

# append() com outra lista

primos = [2, 3, 5, 7]
primos.append([23, 29, 31])
print('Lista apĂłs append:', primos)
print('primos[4]:', primos[4])
# primos[4] imprime a lista [23, 29, 31], pois append adiciona
# a lista como um Ășnico elemento.

Exercício 5.18 — extend() com lista#

Execute as mesmas operaçÔes do exercício 5.17, mas usando o comando extend() no lugar de append() com uma lista. O que acontece? Houve alguma diferença? Tente imprimir o elemento primos[4]. O que é impresso?

Ver solução

Exercício — extend() com lista#

# extend() com outra lista

primos = [2, 3, 5, 7]
primos.extend([23, 29, 31])
print('Lista apĂłs extend:', primos)
print('primos[4]:', primos[4])
# primos[4] imprime 23, pois extend adiciona cada elemento
# individualmente Ă  lista.

Exercício 5.19 — Fatiamento com passo -1#

O que acontece se o terceiro parùmetro de uma operação de fatiamento for -1? Teste em uma lista qualquer o comando lista[::-1]. Qual a diferença para reverse()?

Ver solução

Exercício — Fatiamento com passo -1#

# Fatiamento com passo -1 e diferença para reverse()

lista = [1, 2, 3, 4, 5]

# lista[::-1] cria uma NOVA lista invertida (a original nĂŁo muda)
invertida = lista[::-1]
print('Original:', lista)
print('Fatiamento [::-1]:', invertida)

# reverse() modifica a lista original, sem criar nova lista
lista.reverse()
print('ApĂłs reverse():', lista)

Exercício 5.20 — Inverter com lista por compreensão#

Escreva um programa que inverta uma lista usando o método de lista por compreensão.

Ver solução

Exercício — Inverter com lista por compreensão#

# Inverter uma lista usando lista por compreensĂŁo

lista = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
invertida = [lista[i] for i in range(len(lista) - 1, -1, -1)]
print(invertida)

Exercício 5.21 — Primeira metade#

Use os comandos desta seção para criar uma nova lista com os elementos da primeira metade de uma lista. Por exemplo, se temos lista = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], use os comandos para obter [0, 1, 2, 3, 4].

Ver solução

Exercício — Primeira metade#

# Primeira metade de uma lista

lista = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
primeira_metade = lista[:len(lista) // 2]
print(primeira_metade)

Exercício 5.22 — Apagar primeira metade#

Use os comandos desta seção para apagar os elementos da primeira metade de uma lista. Por exemplo, se temos lista = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], use os comandos para obter lista = [5, 6, 7, 8, 9].

Ver solução

Exercício — Apagar primeira metade#

# Apagar a primeira metade de uma lista

lista = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
del lista[:len(lista) // 2]
print(lista)

Exercício 5.23 — Inverter primeira metade#

Use os comandos desta seção para inverter os elementos da primeira metade de uma lista. Por exemplo, se a lista é lista = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], use os comandos para obter [4, 3, 2, 1, 0, 5, 6, 7, 8, 9].

Ver solução

Exercício — Inverter primeira metade#

# Inverter os elementos da primeira metade de uma lista

lista = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
metade = len(lista) // 2
lista[:metade] = lista[:metade][::-1]
print(lista)

Exercício 5.24 — Segunda metade e primeira invertida#

Partindo da lista = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], use os comandos desta seção para obter [5, 6, 7, 8, 9, 4, 3, 2, 1, 0].

Ver solução

Exercício — Segunda metade e primeira invertida#

# Obter [5,6,7,8,9,4,3,2,1,0] a partir de [0,1,2,3,4,5,6,7,8,9]

lista = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
metade = len(lista) // 2
resultado = lista[metade:] + lista[:metade][::-1]
print(resultado)

Exercício 5.25 — Divisíveis por 7, não por 3#

Escreva um programa que crie uma lista com todos os nĂșmeros entre 100 e 1000 que sĂŁo divisĂ­veis por 7 mas nĂŁo sĂŁo mĂșltiplos de 3.

Ver solução

Exercício — Divisíveis por 7, não por 3#

# NĂșmeros entre 100 e 1000 divisĂ­veis por 7 mas nĂŁo mĂșltiplos de 3

lista = [x for x in range(100, 1001) if x % 7 == 0 and x % 3 != 0]
print(lista)

ExercĂ­cio 5.26 — MĂ©dia#

Escreva um programa que crie uma lista com nĂșmeros digitados pelo usuĂĄrio e forneça como saĂ­da a mĂ©dia desses nĂșmeros.

Ver solução

ExercĂ­cio — MĂ©dia#

# MĂ©dia de nĂșmeros digitados pelo usuĂĄrio

numeros = []
while True:
    entrada = input('Digite um nĂșmero (ou "fim" para encerrar): ')
    if entrada.lower() == 'fim':
        break
    try:
        numeros.append(float(entrada))
    except ValueError:
        print('Valor invĂĄlido. Tente novamente.')

if len(numeros) > 0:
    media = sum(numeros) / len(numeros)
    print(f'Média: {media:.2f}')
else:
    print('Nenhum nĂșmero digitado.')

5.11 Listas de Listas#

Exercício 5.27 — Matriz com for#

Escreva um programa que crie uma matriz bidimensional usando 2 comandos for encaixados, isto é, não use nem multiplicação nem lista por compreensão para criar sua matriz.

Ver solução

Exercício — Matriz com for#

# Matriz bidimensional usando 2 for encaixados

linhas = 3
colunas = 4

matriz = []
for i in range(linhas):
    linha = []
    for j in range(colunas):
        linha.append(0)
    matriz.append(linha)

print(matriz)

Exercício 5.28 — Matriz tridimensional#

Escreva um programa que crie uma matriz tridimensional usando o mecanismo de lista por compreensĂŁo.

Ver solução

Exercício — Matriz tridimensional#

# Matriz tridimensional usando lista por compreensĂŁo

x, y, z = 3, 4, 5
matriz = [[[0 for k in range(z)] for j in range(y)] for i in range(x)]
print(matriz)

5.12 DicionĂĄrios#

Exercício 5.29 — Estados e siglas#

Escreva um programa que crie um dicionårio relacionando o nome dos estados brasileiros (como chaves) às suas siglas. O programa deve solicitar ao usuårio o nome de um estado, e chamar uma função que devolve a sua sigla.

Ver solução

Exercício — Estados e siglas#

# DicionĂĄrio de estados brasileiros e suas siglas

def busca_sigla(estados, nome):
    if nome in estados:
        return estados[nome]
    return 'Estado nĂŁo encontrado.'

estados = {
    'Acre': 'AC', 'Alagoas': 'AL', 'AmapĂĄ': 'AP', 'Amazonas': 'AM',
    'Bahia': 'BA', 'CearĂĄ': 'CE', 'Distrito Federal': 'DF',
    'EspĂ­rito Santo': 'ES', 'GoiĂĄs': 'GO', 'MaranhĂŁo': 'MA',
    'Mato Grosso': 'MT', 'Mato Grosso do Sul': 'MS', 'Minas Gerais': 'MG',
    'ParĂĄ': 'PA', 'ParaĂ­ba': 'PB', 'ParanĂĄ': 'PR', 'Pernambuco': 'PE',
    'PiauĂ­': 'PI', 'Rio de Janeiro': 'RJ', 'Rio Grande do Norte': 'RN',
    'Rio Grande do Sul': 'RS', 'RondĂŽnia': 'RO', 'Roraima': 'RR',
    'Santa Catarina': 'SC', 'SĂŁo Paulo': 'SP', 'Sergipe': 'SE',
    'Tocantins': 'TO'
}

nome = input('Digite o nome de um estado: ')
print(busca_sigla(estados, nome))

Exercício 5.30 — Estados case-insensitive#

Escreva um programa que crie um dicionĂĄrio relacionando o nome dos estados brasileiros (como chaves) Ă s suas siglas. O programa deve perguntar ao usuĂĄrio o nome de um estado e chamar uma função que devolva a sua sigla. O nome do estado pode estar em maiĂșsculas ou minĂșsculas e mesmo assim o programa deve dar a resposta correta.

Ver solução

Exercício — Estados case-insensitive#

# DicionĂĄrio de estados com busca case-insensitive

def busca_sigla(estados, nome):
    nome_lower = nome.lower()
    for estado, sigla in estados.items():
        if estado.lower() == nome_lower:
            return sigla
    return 'Estado nĂŁo encontrado.'

estados = {
    'Acre': 'AC', 'Alagoas': 'AL', 'AmapĂĄ': 'AP', 'Amazonas': 'AM',
    'Bahia': 'BA', 'CearĂĄ': 'CE', 'Distrito Federal': 'DF',
    'EspĂ­rito Santo': 'ES', 'GoiĂĄs': 'GO', 'MaranhĂŁo': 'MA',
    'Mato Grosso': 'MT', 'Mato Grosso do Sul': 'MS', 'Minas Gerais': 'MG',
    'ParĂĄ': 'PA', 'ParaĂ­ba': 'PB', 'ParanĂĄ': 'PR', 'Pernambuco': 'PE',
    'PiauĂ­': 'PI', 'Rio de Janeiro': 'RJ', 'Rio Grande do Norte': 'RN',
    'Rio Grande do Sul': 'RS', 'RondĂŽnia': 'RO', 'Roraima': 'RR',
    'Santa Catarina': 'SC', 'SĂŁo Paulo': 'SP', 'Sergipe': 'SE',
    'Tocantins': 'TO'
}

nome = input('Digite o nome de um estado: ')
print(busca_sigla(estados, nome))

5.13 Tuplas#

Exercício 5.31 — Tupla divisíveis por 7#

Escreva um programa que crie uma tupla com todos os nĂșmeros entre 100 e 1000 que sĂŁo divisĂ­veis por 7 mas nĂŁo sĂŁo mĂșltiplos de 3.

Ver solução

Exercício — Tupla divisíveis por 7#

# Tupla com nĂșmeros entre 100 e 1000 divisĂ­veis por 7 mas nĂŁo mĂșltiplos de 3

tupla = tuple(x for x in range(100, 1001) if x % 7 == 0 and x % 3 != 0)
print(tupla)

Exercício 5.32 — Pi com lista de tuplas#

Modifique o Programa 4.16 de modo que a função que gera coordenadas aleatĂłrias receba como parĂąmetro o nĂșmero de coordenadas que precisam ser geradas e devolva uma lista de tuplas com essas coordenadas. Deste modo, a função que calcula o valor de pi tambĂ©m precisa ser modificada para tratar essas coordenadas em forma de lista de tuplas.

Ver solução

Exercício — Pi com lista de tuplas#

# CĂĄlculo de pi com coordenadas como lista de tuplas

import random as r
import math as m

def gera_coordenadas_aleatorias(n):
    """Gera lista de n pares de coordenadas aleatĂłrias como tuplas."""
    return [(r.random(), r.random()) for _ in range(n)]

def coordenadas_dentro_circulo(x, y):
    """Testa se coordenadas estĂŁo dentro do cĂ­rculo de raio 1."""
    return m.hypot(x, y) < 1

def calcula_pi(n):
    """Calcula pi e o erro associado a partir de n pontos."""
    coordenadas = gera_coordenadas_aleatorias(n)
    conta_circulo = 0
    for x, y in coordenadas:
        if coordenadas_dentro_circulo(x, y):
            conta_circulo += 1
    pi = 4 * conta_circulo / n
    erro = m.fabs(pi - m.pi)
    return pi, erro

num = int(input('Quantos pontos devem ser sorteados? '))
pi, erro = calcula_pi(num)
print(f'Com {num} pontos, o valor de pi Ă© {pi} com erro {erro}')

Exercício 5.33 — Aeroportos com tuplas#

Os dicionårios de Python não são ordenados, pois sua função principal é a busca råpida de uma informação baseada em uma chave. Modifique o programa sobre aeroportos desta seção para trabalhar apenas com tuplas, eliminando o dicionårio e usando o nome da cidade como primeiro elemento da tupla.

Ver solução

Exercício — Aeroportos com tuplas#

# Aeroportos usando apenas tuplas (sem dicionĂĄrio)

lat_galeao = (22, 48, 34)
long_galeao = (43, 15, 0)
aeroporto_galeao = ('Rio', 'GaleĂŁo', lat_galeao, long_galeao)

lat_guarulhos = (23, 26, 6)
long_guarulhos = (46, 28, 22)
aeroporto_guarulhos = ('SĂŁo Paulo', 'Guarulhos', lat_guarulhos, long_guarulhos)

aeroportos = (aeroporto_galeao, aeroporto_guarulhos)

for aeroporto in aeroportos:
    cidade, nome, lat, lon = aeroporto
    print(f'Aeroporto {cidade}:')
    print(f'\t{nome}')
    print(f'\tLatitude: {lat[0]}Âș{lat[1]}\'{lat[2]}"')
    print(f'\tLongitude: {lon[0]}Âș{lon[1]}\'{lon[2]}"')

Quer ir além?#

Se vocĂȘ quiser se desafiar com novos problemas, sem solução disponĂ­vel:

👉 Exercícios extras do Capítulo 5