đ ExercĂcios â CapĂtulo 5#
Organizando a Informação#
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:
- os elementos de Ăndices pares;
- os elementos de Ăndices Ămpares;
- os elementos entre os Ăndices 2 (inclusive) e 4 (exclusive);
- 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:
- o Ășltimo elemento da lista original e depois, decrescendo, os elementos distantes 3 posiçÔes a partir do final atĂ© o inĂcio;
- os elementos entre o Ăndice 87 (inclusive) e o Ăndice 34 (exclusive), em ordem decrescente de Ăndices;
- 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.
- Insira a lista
['Fobos','Deimos']na posição 4 da lista. - Insira
['Sol']na posição zero. - 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: