Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

[Projeto] Projeto particular de aplicativo de imóveis

Olá, comunidade Alura!

Peço à ajuda de vocês para aperfeiçoar um código de programação simulando um aplicativo de cadastro de imóveis que estou construindo com base no que aprendi nas aulas, se alguém puder me ajudar como eu posso melhorar acrescentando mais funções ou simplificando elas, eu agradeceria muito. Segue o código criado até agora:

import os

import random

imoveis = []

def exibir_tela_inicial():
    print("""
        
        Imóveis Paulista
        
        """)

def exibir_opcoes():
    print('1. Cadastro de imóveis\n')
    print('2. Lista de imóveis\n')

def voltar_ao_menu_principal():
    input('\nDigite qualquer tecla para voltar ao menu principal: ')
    main()

def opcao_invalida():
    os.system('cls')
    print('\nOpção inválida ')
    voltar_ao_menu_principal()

def cadastrando_imoveis():
    os.system('cls')
    print('\nBem vindo ao cadastro de imóveis!\n')

    print('Por favor, preencha com os dados do imóvel: \n')

    endereco = input('Endereço: ')
    imoveis.append(endereco)
    cidade = input('Cidade: ')
    imoveis.append(cidade)
    bairro = input('Bairro: ')
    imoveis.append(bairro)
    cep = input('CEP: ')
    imoveis.append(cep)
    complemento = input('Complemento: ')
    imoveis.append(complemento)

    print('\nCadastro realizado com sucesso!')

    cadastro_gerado = random.randint(1, 1000)
    imoveis.append(cadastro_gerado)
    print(f'\nNúmero do cadastro do imóvel: {cadastro_gerado}')
    
    voltar_ao_menu_principal()

def listar_imoveis():
    os.system('cls')
    for numero_cadastro in imoveis:
        print(f'{numero_cadastro}')

    voltar_ao_menu_principal()

def finalizando_app():
    input('Aperte uma tecla para voltar ao menu principal: ')
    main()

def escolher_opcao():
        opcao_escolhida = int(input('Escolha uma opção: '))
        
        if opcao_escolhida == 1:
            cadastrando_imoveis()
        elif opcao_escolhida == 2:
            listar_imoveis()            
        else:
            opcao_invalida()

def main():
    os.system('cls')
    exibir_tela_inicial()
    exibir_opcoes()
    escolher_opcao()
  
if __name__ == '__main__':
    main()
4 respostas

Olá, Davi.

Tudo bem?

Seu projeto de cadastro de imóveis está muito bom. Parabéns! Valeu por compartilhar aqui com a gente.

Vou te dar algumas sugestões para aprimorar o código, simplificar algumas funções e adicionar novas funcionalidades. Vamos lá:

  1. Estrutura de Dados: Em vez de usar uma lista para armazenar os dados dos imóveis, considere usar um dicionário para cada imóvel. Isso tornará o código mais organizado e fácil de entender.

  2. Função de Cadastro: Agrupe os dados de cada imóvel em um dicionário e adicione esse dicionário a uma lista de imóveis.

  3. Melhoria na Exibição dos Imóveis: Ao listar os imóveis, exiba os detalhes de cada um de forma mais organizada.

  4. Função de Busca: Adicione uma função para buscar imóveis pelo número de cadastro.

Veja se faz sentido e faça as mudanças em seu projeto aos poucos.

Espero ter ajudado de alguma forma. Qualquer dúvida manda aqui. Bons estudos.

Boa noite Renan e comunidade Alura!

Primeiramente, agradeço à resposta ao meu post.

Eu fiz algumas modificações no código com base no que você me passou, Renan, além de ajustar outras coisas, mas eu estou com dificuldades em duas coisas:

1 - É criar uma função que pesquise o código conforme você me orientou;

2 - É listar os imóveis mais ou menos assim:

Endereço: endereco, Cidade: cidade, Bairro: bairro, CEP: cep, Complemento: complemento, Código: codigo

Poderiam me ajudar nessas duas questões, por gentileza?

Segue meu código atualizado:

import os

import random

imoveis = [{'Endereço':'Rua Tibiriçá','Cidade':'Santo André','Bairro':'Vila Sacadura Cabral','CEP':'09060820','Complemento':'apt1','Código':'462'}]

def exibir_tela_inicial():
    print("""
        
        Imóveis Paulista
        
        """)

def exibir_opcoes():
    print('1. Cadastro de imóveis\n')
    print('2. Lista de imóveis\n')
    print('3. Pesquisa de imóveis\n')

def voltar_ao_menu_principal():
    input('\nDigite qualquer tecla para voltar ao menu principal: ')
    main()

def opcao_invalida():
    os.system('cls')
    print('\nOpção inválida\n')
    quit()

def cadastrando_imoveis():
    os.system('cls')
    print('\nBem vindo ao cadastro de imóveis!\n')

    print('Por favor, preencha com os dados do imóvel: \n')

    endereco = input('Endereço: ')
    cidade = input('Cidade: ')
    bairro = input('Bairro: ')
    cep = input('CEP: ')
    complemento = input('Complemento: ')
    
    codigo = random.randint(1, 1000)
    print(f'Número do código: {codigo}')
    

    dados_do_imovel = {

        'Endereço':endereco,
        'Cidade':cidade,
        'Bairro':bairro,
        'CEP':cep,
        'Complemento':complemento,
        'Código':codigo

    }
    imoveis.append(dados_do_imovel)

    print('\nCadastro realizado com sucesso!')
    
    voltar_ao_menu_principal()

def listar_imoveis():
    os.system('cls')
    
    for numero_cadastro in imoveis:
        endereco = numero_cadastro['Endereço']
        cidade = numero_cadastro['Cidade']
        bairro = numero_cadastro['Bairro']
        cep = numero_cadastro['CEP']
        complemento = numero_cadastro['Complemento']
        codigo = numero_cadastro['Código']
        print(f'{endereco} | {cidade} | {bairro} | {cep} | {complemento} | {codigo}')
    voltar_ao_menu_principal()

def escolher_opcao():
        opcao_escolhida = int(input('Escolha uma opção: '))
        
        if opcao_escolhida == 1:
            cadastrando_imoveis()
        elif opcao_escolhida == 2:
            listar_imoveis()            
        elif opcao_escolhida == 3:
            pesquisar_imovel()            
        else:
            opcao_invalida()

def pesquisar_imovel():
    for numero_codigo in imoveis:
        pesquisa = int(input('Digite o código: '))
        if pesquisa == numero_codigo['Código']:
            return {f'{pesquisa}'}
        else:
            print('Código não encontrado')

def main():
    os.system('cls')
    exibir_tela_inicial()
    exibir_opcoes()
    escolher_opcao()
  
if __name__ == '__main__':
    main()
solução!

Podemos tentar adicionar uma função de busca que pesquisa imóveis pelo código e ajustando a função de listar imóveis para exibir as informações no formato desejado.

Essa função de busca deve percorrer a lista de imóveis e verificar se o código digitado pelo usuário corresponde ao código de algum imóvel. Se encontrado, exiba os detalhes do imóvel. Podemos organizar a listagem dos imóveis.

Código ajustado:

import os
import random

imoveis = [{'Endereço':'Rua Tibiriçá','Cidade':'Santo André','Bairro':'Vila Sacadura Cabral','CEP':'09060820','Complemento':'apt1','Código':462}]

def exibir_tela_inicial():
    print("""
        
        Imóveis Paulista
        
        """)

def exibir_opcoes():
    print('1. Cadastro de imóveis')
    print('2. Lista de imóveis')
    print('3. Pesquisa de imóveis')

def voltar_ao_menu_principal():
    input('\nDigite qualquer tecla para voltar ao menu principal: ')
    main()

def opcao_invalida():
    os.system('cls')
    print('\nOpção inválida\n')
    voltar_ao_menu_principal()

def cadastrando_imoveis():
    os.system('cls')
    print('\nBem-vindo ao cadastro de imóveis!\n')
    print('Por favor, preencha com os dados do imóvel:\n')

    endereco = input('Endereço: ')
    cidade = input('Cidade: ')
    bairro = input('Bairro: ')
    cep = input('CEP: ')
    complemento = input('Complemento: ')
    
    codigo = random.randint(1, 1000)
    print(f'Número do código: {codigo}')

    dados_do_imovel = {
        'Endereço': endereco,
        'Cidade': cidade,
        'Bairro': bairro,
        'CEP': cep,
        'Complemento': complemento,
        'Código': codigo
    }
    imoveis.append(dados_do_imovel)
    print('\nCadastro realizado com sucesso!')
    
    voltar_ao_menu_principal()

def listar_imoveis():
    os.system('cls')
    
    for imovel in imoveis:
        endereco = imovel['Endereço']
        cidade = imovel['Cidade']
        bairro = imovel['Bairro']
        cep = imovel['CEP']
        complemento = imovel['Complemento']
        codigo = imovel['Código']
        print(f'Endereço: {endereco}, Cidade: {cidade}, Bairro: {bairro}, CEP: {cep}, Complemento: {complemento}, Código: {codigo}')
    
    voltar_ao_menu_principal()

def escolher_opcao():
    opcao_escolhida = int(input('Escolha uma opção: '))
    
    if opcao_escolhida == 1:
        cadastrando_imoveis()
    elif opcao_escolhida == 2:
        listar_imoveis()
    elif opcao_escolhida == 3:
        pesquisar_imovel()
    else:
        opcao_invalida()

def pesquisar_imovel():
    os.system('cls')
    pesquisa = int(input('Digite o código do imóvel: '))
    encontrado = False
    
    for imovel in imoveis:
        if imovel['Código'] == pesquisa:
            endereco = imovel['Endereço']
            cidade = imovel['Cidade']
            bairro = imovel['Bairro']
            cep = imovel['CEP']
            complemento = imovel['Complemento']
            codigo = imovel['Código']
            print(f'Endereço: {endereco}, Cidade: {cidade}, Bairro: {bairro}, CEP: {cep}, Complemento: {complemento}, Código: {codigo}')
            encontrado = True
            break
    
    if not encontrado:
        print('Código não encontrado')
    
    voltar_ao_menu_principal()

def main():
    os.system('cls')
    exibir_tela_inicial()
    exibir_opcoes()
    escolher_opcao()
  
if __name__ == '__main__':
    main()
  1. Função listar_imoveis:

    • Agora, a função exibe as informações dos imóveis em um formato organizado, conforme solicitado.
  2. Função pesquisar_imovel:

    • A função agora percorre a lista de imóveis, compara o código digitado com os códigos dos imóveis na lista e, se encontrar, exibe os detalhes do imóvel. Caso contrário, informa que o código não foi encontrado.

Veja se funciona e se faz sentido.

Bons estudos.

Bom dia Renan, tudo bem?

Primeiramente; obrigado por responder tão rápido.

Eu entendi a modificação que você fez, ajudou a deixar o meu código melhor e mais prático.

Agradeço à atenção e disponibilidade;