identifiquei no código da resolução que haviam algumas indiferenças em relação ao usuário, como o mesmo digitando: 0 dias, números não reais como 5.5 dias e na parte da digitação do nome da cidade a digitação como "salvador", "SALVADOR", SalvadoR e etc... dando erro. Por isso junto ao auxílio do chat GPT proponho o código a seguir no qual evita esses contratempos por parte do usuáio.
OBS: "NÃO SEI SE ESCOLHI O TÓTICO CERTO".
Dados das cidades
distancias = {
"Salvador": 850,
"Fortaleza": 800,
"Natal": 300,
"Aracaju": 550
}
passeios = {
"Salvador": 200,
"Fortaleza": 400,
"Natal": 250,
"Aracaju": 300
}
km_l = 14
gasolina = 5
Validação do número de diárias
while True:
try:
dias = int(input("Quantas diárias? "))
if dias <= 0:
print("Digite um número inteiro maior que zero.")
else:
break
except ValueError:
print("Erro! Digite apenas números inteiros.")
Validação da cidade
cidades_disponiveis = list(distancias.keys())
while True:
cidade = input(
"Qual a cidade? [Salvador, Fortaleza, Natal ou Aracaju]: "
).strip().title()
if cidade in cidades_disponiveis:
break
else:
print("Cidade inválida!")
print(f"Escolha uma destas opções: {', '.join(cidades_disponiveis)}")
Funções
def gasto_hotel(dias):
return 150 * dias
def gasto_gasolina(cidade):
return (2 * distancias[cidade] * gasolina) / km_l
def gasto_passeio(cidade, dias):
return passeios[cidade] * dias
Cálculo total
gastos = (
gasto_hotel(dias)
+ gasto_gasolina(cidade)
+ gasto_passeio(cidade, dias)
)
print(
f"\nCom base nos gastos definidos, "
f"uma viagem de {dias} dias para {cidade} "
f"saindo de Recife custaria R$ {round(gastos, 2)}"
)