1
resposta

Desafio: hora da prática

  1. Como cientista de dados em um time de futebol, você precisa implementar novas formas de coleta de dados sobre o desempenho de jogadores e do time como um todo. Sua primeira ação é criar uma forma de calcular a pontuação do time no campeonato nacional a partir dos dados de gols marcados e sofridos em cada jogo.
    Escreva uma função chamada calcula_pontos que recebe como parâmetros duas listas de números inteiros, representando os gols marcados e sofridos pelo time em cada partida do campeonato. A função deve retornar a pontuação do time e o aproveitamento em percentual, levando em consideração que a vitória vale 3 pontos, o empate vale 1 ponto e a derrota 0 pontos.

Observação: se a quantidade de gols marcados numa partida for maior que a de sofridos, o time venceu. Caso seja igual, o time empatou e se for menor, o time perdeu. Para calcular o aproveitamento devemos fazer a razão entre a pontuação do time pela pontuação máxima que ele poderia receber.

Para teste, utilize as seguintes listas de gols marcados e sofridos:

gols_marcados = [2, 1, 3, 1, 0] gols_sofridos = [1, 2, 2, 1, 3]

"A pontuação do time foi de [pontos] e seu aproveitamento foi de [aprov]%"
RESPOSTA:
#Função
def calcula_pontos(gols_marcados, gols_sofridos):
pontos = 0
#Comparando os resultados das partidas
for marcados, sofridos in zip(gols_marcados, gols_sofridos):
if marcados > sofridos:
pontos += 3
elif marcados == sofridos:
pontos += 1

#Pontuação máxima possível
pontos_maximos = len(gols_marcados) * 3

#Aproveitamento
aproveitamento = (pontos / pontos_maximos) * 100

return pontos, aproveitamento

#Listas de teste
gols_marcados = [2, 1, 3, 1, 0]
gols_sofridos = [1, 2, 2, 1, 3]

#Chamada da função
pontos, aprov = calcula_pontos(gols_marcados, gols_sofridos)

#Saída
print(f"A pontuação do time foi de {pontos} "
f"e seu aproveitamento foi de {aprov:.1f}%")

5.Você recebeu o desafio de criar um código que calcula os gastos de uma viagem para um das quatro cidades partindo de Recife, sendo elas: Salvador, Fortaleza, Natal e Aracaju.
O custo da diária do hotel é de 150 reais em todas elas e o consumo de gasolina na viagem de carro é de 14 km/l, sendo que o valor da gasolina é de 5 reais o litro. O gastos com passeios e alimentação a se fazer em cada uma delas por dia seria de [200, 400, 250, 300], respectivamente.

Sabendo que as distâncias entre Recife e cada uma das cidades é de aproximadamente [850, 800, 300, 550] km, crie três funções nas quais: a 1ª função calcule os gastos com hotel (gasto_hotel), a 2ª calcule os gastos com a gasolina (gasto_gasolina) e a 3ª os gastos com passeio e alimentação (gasto_passeio).

Para testar, simule uma viagem de 3 dias para Salvador partindo de Recife. Considere a viagem de ida e volta de carro.

"Com base nos gastos definidos, uma viagem de [dias] dias para [cidade] saindo de Recife custaria [gastos] reais"
RESPOSTA:
#Função para gastos com hotel
def gasto_hotel(dias):
return dias * 150

#Função para gastos com gasolina
def gasto_gasolina(distancia):
consumo_carro = 14 # km/l
valor_gasolina = 5 # reais por litro

ida_volta = distancia * 2
litros_gastos = ida_volta / consumo_carro

return litros_gastos * valor_gasolina

#Função para gastos com passeio e alimentação
def gasto_passeio(dias, valor_diario):
return dias * valor_diario

#Dados da viagem
cidade = "Salvador"
dias = 3
distancia_salvador = 850
passeio_salvador = 200

#Cálculos
hotel = gasto_hotel(dias)
gasolina = gasto_gasolina(distancia_salvador)
passeio = gasto_passeio(dias, passeio_salvador)

gastos = hotel + gasolina + passeio

#Saída
print(f"Com base nos gastos definidos, uma viagem de {dias} dias "
f"para {cidade} saindo de Recife custaria {gastos:.2f} reais")

1 resposta

Olá, Weydison. Como vai?

Parabéns pelas resoluções! Seus códigos estão muito bem escritos, estruturados e demonstram que você compreendeu perfeitamente como criar funções em Python, passar parâmetros e trabalhar com manipulação de dados em listas.

Gostaria de destacar pontos excelentes na sua solução e trazer algumas sugestões de boas práticas que vão deixar seu código ainda mais robusto e alinhado com o mercado. Vamos a elas:

1. Excelente uso da função zip() (Desafio do Time de Futebol)

No primeiro exercício, você utilizou a função zip() de forma impecável para percorrer as listas gols_marcados e gols_sofridos em paralelo. Essa é a melhor prática em Python (Pythonic Code), pois evita a necessidade de criar variáveis de controle de índices numéricos (como i), tornando o código mais limpo e rápido.

2. Generalização e Escalabilidade (Desafio da Viagem)

A sua separação do problema em três funções distintas (gasto_hotel, gasto_gasolina e gasto_passeio) seguiu perfeitamente o princípio da responsabilidade única. Cada função cuida apenas de uma parte do cálculo.

Como sugestão de melhoria para deixar o código ainda mais automatizado e inteligente para o usuário, você poderia agrupar os dados fixos das cidades (distância e custos diários) em um dicionário de dados. Dessa forma, você elimina a necessidade de criar variáveis soltas para cada cidade no meio do script.

Veja este exemplo de como estruturar isso para tornar o sistema escalável para qualquer um dos destinos:

# Guardamos as informações fixas em um dicionário para fácil consulta
informacoes_cidades = {
    'Salvador': {'distancia': 850, 'passeio_diario': 200},
    'Fortaleza': {'distancia': 800, 'passeio_diario': 400},
    'Natal': {'distancia': 300, 'passeio_diario': 250},
    'Aracaju': {'distancia': 550, 'passeio_diario': 300}
}

def gasto_hotel(dias):
    return dias * 150

def gasto_gasolina(distancia):
    consumo_carro = 14 
    valor_gasolina = 5 
    ida_volta = distancia * 2
    litros_gastos = ida_volta / consumo_carro
    return litros_gastos * valor_gasolina

def gasto_passeio(dias, valor_diario):
    return dias * valor_diario

# Simulação da viagem alterando apenas o nome do destino
cidade_escolhida = "Salvador"
dias_viagem = 3

# Buscamos os dados dinamicamente no dicionário com base na escolha
dados_destino = informacoes_cidades[cidade_escolhida]

total_hotel = gasto_hotel(dias_viagem)
total_gasolina = gasto_gasolina(dados_destino['distancia'])
total_passeio = gasto_passeio(dias_viagem, dados_destino['passeio_diario'])

gastos_totais = total_hotel + total_gasolina + total_passeio

print(f"Com base nos gastos definidos, uma viagem de {dias_viagem} dias "
      f"para {cidade_escolhida} saindo de Recife custaria {gastos_totais:.2f} reais")

O que mudou com essa abordagem?

Se amanhã você precisar calcular os custos de uma viagem para Natal ou Fortaleza, não precisará criar novas variáveis como distancia_natal, passeio_natal. Bastará alterar o valor da string na variável cidade_escolhida para qualquer uma das chaves do dicionário e todo o cálculo se adaptará sozinho.

Você está aplicando os conceitos de funções e estruturas com muita facilidade. Continue mantendo esse ótimo padrão nos próximos desafios do curso!

Espero que possa ter lhe ajudado!