1
resposta

[Sugestão] Sugestão na questão 9

Questão 09 Você recebeu o desafio de criar um código que calcule os gastos de uma viagem saindo de Recife para uma das quatro cidades a seguir:

Salvador

Fortaleza

Natal

Aracaju

Informações fornecidas: Diária do hotel: R$150 em todas as cidades.

Consumo de gasolina: 14 km/l.

Preço da gasolina: R$5,00 por litro.

Gastos com passeios e alimentação por dia:

Salvador: R$200

Fortaleza: R$400

Natal: R$250

Aracaju: R$300

Distâncias de Recife até as cidades (ida):

Salvador: 850 km

Fortaleza: 800 km

Natal: 300 km

Aracaju: 550 km

Objetivo: Criar três funções:

gasto_hotel: calcula os gastos com hotel.

gasto_gasolina: calcula os gastos com gasolina (considerando ida e volta).

gasto_passeio: calcula os gastos com passeios e alimentação.

Observação importante: Durante o estudo, percebi que o instrutor não abordou um ponto que considero essencial: Ao solicitar o nome da cidade ao usuário, ele pode digitar com letras minúsculas, maiúsculas ou misturadas, o que poderia causar erros nas comparações no código.

Para evitar esse tipo de problema e tornar o código mais robusto, é recomendável utilizar a função lower() para padronizar a entrada do usuário. Assim, independentemente de como o usuário digitar, o programa funcionará corretamente.

Meu código :

dias = int(input("Quantas diárias? "))
cidade = input("Qual a cidade? [Salvador, Fortaleza, Natal ou Aracaju]: ").lower()

distancias = [850, 800, 300, 550]
passeio = [200, 400, 250, 300]
km_l = 14
gasolina = 5

def gasto_hotel(dias):
    return 150 * dias

def gasto_gasolina(cidade):
    if cidade == "salvador":
        return (2 * distancias[0] * gasolina) / km_l 
    elif cidade == "fortaleza":
        return (2 * distancias[1] * gasolina) / km_l 
    elif cidade == "natal":
        return (2 * distancias[2] * gasolina) / km_l 
    elif cidade == "aracaju":
        return (2 * distancias[3] * gasolina) / km_l 

def gasto_passeio(cidade, dias):
    if cidade == "salvador":
        return passeio[0] * dias
    elif cidade == "fortaleza":
        return passeio[1] * dias
    elif cidade == "natal":
        return passeio[2] * dias 
    elif cidade == "aracaju":
        return passeio[3] * dias
...

Conclusão: Ao utilizar .lower() na entrada da cidade, o código se torna mais amigável e evita possíveis falhas causadas por variação de maiúsculas e minúsculas digitadas pelo usuário.

1 resposta

Oi! Tudo bem com você?

Meus parabéns pela resolução do desafio, fico feliz em ver você dominando tópicos importantes como a leitura de dados com input(), uso de funções e aplicação de estruturas condicionais com if.

E sua conclusão está certíssima! Usar o lower() na leitura de dados implica em uma melhor maneira de receber as informações do usuário. Ainda que alguém digite "FORTALEZA" ou "fORTALEZA", por exemplo, isso não iria prejudicar a execução do algoritmo.

E uma dica! Sempre compartilhe o seu código na íntegra, assim a gente pode analisar sua solução por completo e darmos um melhor feedback pra ti! Senti falta do trecho final do seu código, onde você usou ....

No mais, continue postando suas soluções aqui no fórum! Também deixo aqui outros métodos de string bem interessantes.

Ícone de sugestão Para saber mais:

Sugestão de conteúdo para você mergulhar ainda mais sobre o tema:

Alguns materiais estão em inglês, mas é possível compreendê-los usando o recurso de tradução de páginas do próprio navegador.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!