Ir ao conteúdo
  • Cadastre-se

Python Problemas com algoritmo em Python (iniciantes)


Posts recomendados

Bom dia, pessoal.

Me chamo Lucas e estou iniciando aulas de programação. Fiz meu cadastro no Clube do Hardware para ter uma comunicação direta com a comunidade, retirar minhas dúvidas e aprimorar meus conhecimentos com a ajuda de vocês.

Vamos ao que interessa!

Estive passando por um problema com uma situação que de certa forma é bem comum em nosso cotidiano e resolvi desenvolver um algoritmo de "Estacionamento Rotativo". O que meu programa (algoritmo) deve fazer é o seguinte:

  • O programa deve receber a placa de um veículo, tal como o horário de entrada (horário do sistema do computador).
  • Após registrar a entrada do veículo, deve armazenar as informações. (Placa, horário de entrada)
  • Quando o cliente sair, o algoritmo deve receber a placa do cliente e capturar todas as informações que foram armazenadas no momento da entrada (horário de entrada) e capturar também o horário de saída, dessa forma fazendo o seguinte cálculo:

 

De 0 a 30 minutos: O cliente pagará 2,00.

De 31 minutos até 1 hora: O cliente pagará 4,00.

Após 1 hora, a cada 10 minutos: O cliente pagará 0,10 centavos de acréscimo. (Ex.: Tempo de estadia: 1 hora e 10 minutos: O cliente pagará 4,10).

 

Agora minhas dúvidas perante ao caso:

  1. Não sei como posso fazer para que o algoritmo "armazene" as informações que são dados no momento do registro. (Placa e Horário de Entrada)
  2. Não sei como posso fazer para que o algoritmo vá atrás das informações que foram "armazenadas". (Por exemplo: Quero que só pela placa, ele vá atrás do horário de entrada e faça o calculo do valor)

 

Já tentei fazer em C++/C mas tive alguns problemas e acabei optando por Python por ser "mais fácil". Já fiz um algoritmo mas não está dando muito resultado, talvez com a ajuda de vocês, posso conseguir achar uma "luz". Deixem a opinião de vocês como posso está resolvendo este problema. Desde já, agradeço!

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@Usuário 3301, seja bem vindo ao Fórum do Clube do Hardware.

 

6 horas atrás, Usuário 3301 disse:

Não sei como posso fazer para que o algoritmo "armazene" as informações que são dados no momento do registro. (Placa e Horário de Entrada)

 

Provavelmente vai utilizar algo relacionado a vetores ou listas (não programo em Python).

 

6 horas atrás, Usuário 3301 disse:

Não sei como posso fazer para que o algoritmo vá atrás das informações que foram "armazenadas". (Por exemplo: Quero que só pela placa, ele vá atrás do horário de entrada e faça o calculo do valor)

 

A "busca" dos dados vai depender de como está armazenado. Se estiver com vetores, por exemplo, poderia utilizar uma iteração (laço de repetição) para verificar posição por posição e ir comparando o dado que deseja. Se for com lista, a depender, poderá utilizar funções da própria lista... de um modo geral, vai depender de como funciona no Python (que eu não conheço).

 

 

7 horas atrás, Usuário 3301 disse:

Já fiz um algoritmo mas não está dando muito resultado, talvez com a ajuda de vocês, posso conseguir achar uma "luz".

 

Posta o código que já fez e onde está com dúvidas... assim como qual programa utilizar para compilar/rodar o código.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

 

18 horas atrás, Simon Viegas disse:

@Usuário 3301, seja bem vindo ao Fórum do Clube do Hardware.

 

 

Provavelmente vai utilizar algo relacionado a vetores ou listas (não programo em Python).

 

 

A "busca" dos dados vai depender de como está armazenado. Se estiver com vetores, por exemplo, poderia utilizar uma iteração (laço de repetição) para verificar posição por posição e ir comparando o dado que deseja. Se for com lista, a depender, poderá utilizar funções da própria lista... de um modo geral, vai depender de como funciona no Python (que eu não conheço).

 

 

 

Posta o código que já fez e onde está com dúvidas... assim como qual programa utilizar para compilar/rodar o código.

 

Já fiz várias alterações no meu algoritmo, já que estava dando alguns erros que não deveriam existir.

Neste exato momento estou utilizando o seguinte algoritmo:

 

import os
def menu():
    print('''Escolha uma opção:

        (1) Registrar um novo veículo
        (2) Registrar uma saida de um veículo
        ''')
    opcao = input("Escolha uma opção: ")
    if opcao == "1":
        os.system("cls")
        print('''---------------------- REGISTROS ------------------------''')
        Placa = input("Informe a placa do veículo: ")
        Entrada = input(str("Informe a hora de entrada do veículo: "))
        print(" ")
        print("Placa do veículo é: ", Placa)
        print("Sua entrada foi às: ", Entrada)
        print("------------------------ XXXXXXX ----------------------------")
        input("Aperte ENTER para continuar.")
        os.system('cls')
        menu()
    elif opcao == "2":
        print("-------------------------- SAIDA -----------------------------")
        Entrada = input(str("Informe a hora de entrada do veículo: "))
        Saida = input(str("Informe a hora da saida do veículo: "))
        HoraT = str(Saida - Entrada)
        if (HoraT <= 00.30):
            print("Entrada: ",Entrada)
            print("Saida: ", Saida)
            print("Tempo de estadia: ", HoraT)
            print("Valor a ser pago é: 2,00")
            print("------------------- XXXXXXXXXXXX ----------------------")
            menu()
        elif (HoraT >= 00.60):
            print("Entrada: ", Entrada)
            print("Saida: ", Saida)
            print("Tempo de estadia: ", HoraTotal)
            print("Valor a ser pago é: 4,00")
            menu()
        else:
            menu()
    else:
        print("Comando inválido!")
        menu()
menu()

Até o momento ficou assim. Como eu disse, por questão de não saber como armazenar ainda a placa e a hora que são dadas no momento da entrada do veículo, apenas coloquei para o programa ler a placa do carro, mas no momento da saída, você vai apenas colocar a hora e a saída do carro, ou seja, a entrada se torna basicamente "inútil". Ainda assim, ele apresenta um erro com o cálculo que coloquei para ele encontrar o tempo que o cliente passou dentro do estacionamento. Não sei o que fazer...

adicionado 1 minuto depois
15 horas atrás, fspjonny disse:

Respondi a uma questão semelhante a essa esses dias, veja se te ajuda: 

 

 

Irei dar uma olhada futuramente, pode ser que pode esclarecer alguma coisa sobre o armazenamento de dados, mas meu sistema não precisará de identificação de placas através de imagens.

Link para o comentário
Compartilhar em outros sites

Para armazenar os dados você terá que usar um banco de dados como o MySQL, PostgreSQL ou até o SQLServer, dependendo da amplitude do programa, ou seja, se vai gerenciar várias garagens ou apenas uma garagem, e uma licença de SQLServer tem um alto custo e deve ser usada em grandes projetos corporativos com servidor dedicado a função de servir dados, não sei se seria seu caso, mas projetos de médio e pequeno porte na grande maioria o povo do Python usa PostgreSQL(online em uma PaaS ou servidor local) e também MySQL para aplicações locais(instalações standalone em um computador ou mais computadores locais) ou em servidor local também rola.

 

O seu código apresenta somente o menu e sem função alguma de armazenamento, nem mesmo em texto, o teu processo de entrada de dados é todo manual, mas ele poderá ser todo automatizado conforme explica o link que te enviei anteriormente, é uma questão de arregaçar as mangas e dar uma estudada.

 

Aqui neste link mostra como você pode realizar um CRUD da sua aplicação em um banco de dados MySQL: 

 

 

Vídeos como esse tem aos montes no Youtube e te recomendo fortemente torcar o WampServer sugerido no vídeo pelo Xampp: https://www.apachefriends.org/pt_br/index.html

é muito mais estável que WampServer.

 

Este outro link aqui te mostra como trabalhar com data e hora no Python, você poderá escolher o formato de datas e hora

https://www.guru99.com/date-time-and-datetime-classes-in-python.html

 

Para ler a placa automaticamente você precisa instalar com o pip e importar o módulo OpenCV para Python: https://pypi.org/project/opencv-python/

 

O procedimento de uso está no link que te passei antes acima ou mesmo no site do OpenCV.

Link para o comentário
Compartilhar em outros sites

3 horas atrás, fspjonny disse:

Para armazenar os dados você terá que usar um banco de dados como o MySQL, PostgreSQL ou até o SQLServer, dependendo da amplitude do programa, ou seja, se vai gerenciar várias garagens ou apenas uma garagem, e uma licença de SQLServer tem um alto custo e deve ser usada em grandes projetos corporativos com servidor dedicado a função de servir dados, não sei se seria seu caso, mas projetos de médio e pequeno porte na grande maioria o povo do Python usa PostgreSQL(online em uma PaaS ou servidor local) e também MySQL para aplicações locais(instalações standalone em um computador ou mais computadores locais) ou em servidor local também rola.

 

O seu código apresenta somente o menu e sem função alguma de armazenamento, nem mesmo em texto, o teu processo de entrada de dados é todo manual, mas ele poderá ser todo automatizado conforme explica o link que te enviei anteriormente, é uma questão de arregaçar as mangas e dar uma estudada.

 

Aqui neste link mostra como você pode realizar um CRUD da sua aplicação em um banco de dados MySQL: 

 

 

Vídeos como esse tem aos montes no Youtube e te recomendo fortemente torcar o WampServer sugerido no vídeo pelo Xampp: https://www.apachefriends.org/pt_br/index.html

é muito mais estável que WampServer.

 

Este outro link aqui te mostra como trabalhar com data e hora no Python, você poderá escolher o formato de datas e hora

https://www.guru99.com/date-time-and-datetime-classes-in-python.html

 

Para ler a placa automaticamente você precisa instalar com o pip e importar o módulo OpenCV para Python: https://pypi.org/project/opencv-python/

 

O procedimento de uso está no link que te passei antes acima ou mesmo no site do OpenCV.

 

Imaginei que tivesse que trabalhar com bando de dados, darei uma estudada por estes links que você me passou e futuramente trarei o algoritmo 100% funcional!

 

Sim, por enquanto estou trabalhando com este algoritmo completamente manual por não saber como devo automatizar tudo, mas entrarei com a mão na massa e deixarei tudo muito mais prático! Obrigado pela atenção e pela ajuda.

Link para o comentário
Compartilhar em outros sites

29 minutos atrás, Usuário 3301 disse:

 

Imaginei que tivesse que trabalhar com bando de dados, darei uma estudada por estes links que você me passou e futuramente trarei o algoritmo 100% funcional!

 

Sim!, todas as vezes em que você precisar armazenar algum dado, seja ele qual for até mesmo uma configuração de programa, você terá que escolher um modo de armazenar esse dado, para que posteriormente ele seja manipulado, seja em um banco de dados, ou um arquivo.

É bom que leia sobre bancos de dados e aprenda as formas de uso e relacionamentos que podem existir entre tabelas.

29 minutos atrás, Usuário 3301 disse:

Sim, por enquanto estou trabalhando com este algoritmo completamente manual por não saber como devo automatizar tudo, mas entrarei com a mão na massa e deixarei tudo muito mais prático! Obrigado pela atenção e pela ajuda.

Programar costuma ser a última parte do processo, você precisa saber ou definir como a parte hardware vai operar ou já está operando e como coletar os dados,  para aí sim processar essas informações na parte software.

 

Bons estudos e boa sorte, qualquer outra dúvida poste ela aqui!👍

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...