O ENUNCIADO:
"O objetivo é criar uma interface que permita aos usuários fornecer seus dados pessoais, a fim de receberem uma avaliação sobre a sua elegibilidade para crédito."
A RESOLUÇÃO COM MEU INCREMENTO (pesquisei na página sobre o dash):
from dash import Dash, dcc, html
from dash.dependencies import Input, Output, State
import dash_bootstrap_components as dbc
app = Dash(__name__, external_stylesheets=[dbc.themes.BOOTSTRAP])
app.layout = html.Div([
html.H1('Análise de Elegibilidade de Crédito', className='text-center mb-4'),
dbc.Container([
dbc.Row([
dbc.Col([
dbc.InputGroup([
dbc.InputGroupText('Idade'),
dbc.Input(id='idade', type='number', placeholder='Digite sua idade'),
], className='mb-3'),
dbc.InputGroup([
dbc.InputGroupText('Tipo de Trabalho'),
dbc.Select(id='tipo_trabalho', options=[
{'label': 'CLT', 'value': 'clt'},
{'label': 'Profissional liberal', 'value': 'profissional_liberal'},
{'label': 'Autônomo', 'value': 'autônomo'},
{'label': 'Aposentado', 'value': 'aposentado'},
{'label': 'Desempregado', 'value': 'desempregado'},
{'label': 'Outro', 'value': 'outro'}
]),
], className='mb-3'),
dbc.InputGroup([
dbc.InputGroupText('Renda Mensal'),
dbc.Input(id='renda_mensal', type='number', placeholder='Digite sua renda mensal'),
], className='mb-3'),
dbc.InputGroup([
dbc.InputGroupText('Score de Crédito'),
dbc.Input(id='score_credito', type='number', placeholder='Digite seu score de crédito'),
], className='mb-3'),
dbc.InputGroup([
dbc.InputGroupText('Número de Dependentes'),
dbc.Input(id='num_dependentes', type='number', placeholder='Digite o número de dependentes'),
], className='mb-3'),
dbc.InputGroup([
dbc.InputGroupText('Valor do Empréstimo Solicitado'),
dbc.Input(id='valor_emprestimo', type='number', placeholder='Digite o valor do empréstimo solicitado'),
], className='mb-3'),
dbc.InputGroup([
dbc.Button('Verificar Elegibilidade', id='botao_verificar', color='primary'),
html.Div(id='resultado_container', className='mt-3')
], className='mb-3'),
])
])
])
])
@app.callback(
Output('resultado_container', 'children'),
Input('botao_verificar', 'n_clicks'),
State('idade', 'value'),
State('tipo_trabalho', 'value'),
State('renda_mensal', 'value'),
State('score_credito', 'value'),
State('num_dependentes', 'value'),
State('valor_emprestimo', 'value'),
prevent_initial_call=True
)
def processar_analise(n_clicks, idade, tipo_trabalho, renda_mensal, score_credito, num_dependentes, valor_emprestimo):
# Proteção para o código não travar caso o usuário clique com campos vazios
if None in [idade, tipo_trabalho, renda_mensal, score_credito, num_dependentes, valor_emprestimo]:
return "Por favor, preencha todos os campos."
# Chama a função que faz os testes matemáticos de elegibilidade
resultado = verificar_elegibilidade(idade, tipo_trabalho, renda_mensal, score_credito, num_dependentes, valor_emprestimo)
return resultado
def verificar_elegibilidade(idade, tipo_trabalho, renda_mensal, score_credito, num_dependentes, valor_emprestimo):
# Lógica de verificação de elegibilidade (exemplo simplificado)
if idade < 18:
return "Não elegível: idade mínima não atingida."
if renda_mensal < 5000:
return "Não elegível: renda mensal insuficiente."
if score_credito < 850:
return "Não elegível: score de crédito baixo."
if valor_emprestimo > renda_mensal * 10:
return "Não elegível: valor do empréstimo solicitado muito alto."
return "Elegível para o empréstimo."
if __name__ == '__main__':
app.run(debug=True)
OBSERVAÇÃO: Há comandos dados em aula que já foram atualizados na biblioteca, por isso a diferença.
O RETORNO VISUAL: