Olá, Kelvin. Como vai?
Parabéns pela resolução do desafio! Como Analista de Sistemas Júnior, você aplicou um conceito fundamental de eficiência: a modularização. Criar uma função para encapsular a lógica de verificação torna seu código reutilizável e muito mais organizado.
Sua lógica de utilizar o operador in é a forma mais performática e legível de verificar a existência de um elemento em uma lista no Python. Além disso, o uso do método .upper() na entrada do usuário foi uma excelente sacada de UX (User Experience), garantindo que o programa funcione mesmo que a pessoa digite "feijão" em letras minúsculas.
Gostaria de destacar dois pontos técnicos para o seu crescimento na linguagem:
1. O comportamento do return com print
No seu código, você usou return print(...). Em Python, a função print() sempre retorna None. Portanto, sua função está tecnicamente retornando None. Para seguir as boas práticas, geralmente escolhemos um dos dois caminhos:
- Ou a função apenas exibe a mensagem (sem o
return). - Ou a função retorna a string e o
print é feito na chamada da função.
2. Tratamento de Strings (Acentuação)
Um detalhe comum em sistemas brasileiros: se o usuário digitar "FEIJAO" (sem o til), o Python dirá que o item não está na despensa, pois para a linguagem à é diferente de A. Em projetos reais, costumamos usar bibliotecas como a unicodedata para remover acentos antes de comparar.
Dica de Refinamento:
Para deixar sua função ainda mais "pura" (fácil de testar), você poderia fazer assim:
despensa = ['FEIJÃO', 'ARROZ', 'DETERGENTE', 'SAL', 'TRIGO']
def check_item(item):
if item in despensa:
return f'O item {item} está disponível na despensa!'
return f'O item {item} precisa ser comprado.'
item_digitado = input('Digite o item: ').upper()
mensagem = check_item(item_digitado)
print(mensagem)
Dessa forma, a função check_item fica responsável apenas pela lógica, enquanto o print fica responsável pela saída, separando as preocupações do seu código.
Você já pensou em como faria se a despensa fosse uma lista de dicionários, contendo também a quantidade de cada item?