Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Sugestão] Resolução Ex 9

Gostei muito da solução do professor e de outros alunos. Fiquei impressionado como conseguiram fazer tudo escrevendo pouco A minha solução ficou bem mais extensa. Mas acho que tem algumas ideias boas que gostaria de compartilhar:

cidades = ['Salvador', 'Fortaleza', 'Natal', 'Aracaju']
diaria_hotel = 150
consumo_km_lt = 14
preco_lt = 5
gastos_por_cidade = [200, 400, 250, 300]
distancia_recife = [850, 800, 300, 550]
dia = int(input(f'Insira o número de dias que você vai ficar no destino: '))
destino = input(f'Escolha uma dessas cidades: Salvador, Fortaleza, Natal ou Aracaju: ')
dic_distancia_destino = {}
dic_passeio_destino = {}
custo_viagem = round(total_hotel + total_gasolina + total_passeio, 2)

for i in range(len(cidades)):
  dic_distancia_destino[cidades[i]] = distancia_recife[i]

for i in range(len(cidades)):
  dic_passeio_destino[cidades[i]] = gastos_por_cidade[i]

def gasto_hotel(diaria, dias):
  total_hotel = diaria_hotel * dia
  return total_hotel

total_hotel = gasto_hotel(diaria_hotel, dia)

def gasto_gasolina(distancia, consumo, preco_gas):
  total_gasolina = round(((dic_distancia_destino[destino] / consumo_km_lt) * preco_lt) * 2, 2)
  return total_gasolina

total_gasolina = gasto_gasolina(distancia_recife, consumo_km_lt, preco_lt)

def gasto_passeio(custo_passeio, dias):
  total_passeio = dic_passeio_destino[destino] * dia
  return total_passeio

total_passeio = gasto_passeio(gastos_por_cidade, dia)
  

print(f'Com base nos gastos definidos, uma viagem de {dia} dias para {destino} saindo de Recife custaria {custo_viagem} reais\n'
      f'Sendo {total_gasolina} para a gasolina,\n{total_hotel} para o Hotel\ne {total_passeio} para o passeio')
1 resposta
solução!

Olá, Filipe! Tudo bem?

Vejo que você está engajado em resolver o exercício e isso é ótimo! Sua solução está correta e bem estruturada. Parabéns.

No entanto, dá para tornar o código mais conciso, veja:

Uma maneira de simplificar o código é evitar a repetição de loops. No seu caso, você criou dois loops for separados para preencher dic_distancia_destino e dic_passeio_destino. Isso pode ser feito em um único loop, assim:

for i in range(len(cidades)):
  dic_distancia_destino[cidades[i]] = distancia_recife[i]
  dic_passeio_destino[cidades[i]] = gastos_por_cidade[i]

Outro ponto é que você não precisa criar uma variável para cada função que chama. Você pode chamar as funções diretamente dentro do print. Assim:

print(f'Com base nos gastos definidos, uma viagem de {dia} dias para {destino} saindo de Recife custaria {round(gasto_hotel(diaria_hotel, dia) + gasto_gasolina(distancia_recife, consumo_km_lt, preco_lt) + gasto_passeio(gastos_por_cidade, dia), 2)} reais\n'
      f'Sendo {gasto_gasolina(distancia_recife, consumo_km_lt, preco_lt)} para a gasolina,\n{gasto_hotel(diaria_hotel, dia)} para o Hotel\ne {gasto_passeio(gastos_por_cidade, dia)} para o passeio')

Essas são apenas algumas sugestões para tornar o código mais conciso. Lembre-se de que a clareza do código é muito importante, então se a sua versão mais longa faz mais sentido para você, tudo bem mantê-la!

Espero ter ajudado e bons estudos!