Ir para conteúdo
Tomaz Pontes

Diminuir algoritimo em Python

Recommended Posts

Ola pessoal, antes de tudo nao sou um usuario avancado de python, o que sei e o que preciso sao coisas basicas que envolvam lacos de repeticao e codigos simples para um trabalho de primeiro semestre de faculdade. Desenvolvi um programa de cadastros de funcionarios, porém um trecho do codigo de consulta ficou muito extenso, preciso de vossa ajuda e sugestoes para comprimi-lo. O arquivo esta aqui nesse post do Imgur:

https://imgur.com/a/6h0vRS9

Desde ja, obrigado 

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, Tomaz Pontes disse:

https://imgur.com/a/6h0vRS9

 

Link ta quebrado amigo, poste o codigo.. fica mais fácil para ajuda-lo 

Compartilhar este post


Link para o post
Compartilhar em outros sites
10 horas atrás, igu disse:

 

Link ta quebrado amigo, poste o codigo.. fica mais fácil para ajuda-lo 

def consultar_funcionario():
    nome = ""
    sexo= ""
    cpf = ""
    dNasc = ""
    mNasc = ""
    aNasc = ""
    cargo = ""
    valorSalario = ""
    dCont = ""
    mCont = ""
    aCont = ""
    cont = 0
    print("Consultar Funcionário")
    cpfPesquisa = str(input("cpf: "))
    arquivo = open("cadastros.txt", "r")
    funcionario = arquivo.readlines()
    for linha in funcionario:
        while (linha[cont] != ','):
            nome += linha[cont]
            cont += 1
        cont += 1
        while (linha[cont] != ','):
            sexo += linha[cont]
            cont += 1
        cont += 1
        while (linha[cont] != ','):
            cpf += linha[cont]
            cont += 1
        cont += 1
        while (linha[cont] != ','):
            dNasc += linha[cont]
            cont += 1
        cont += 1
        while (linha[cont] != ','):
            mNasc += linha[cont]
            cont += 1
        cont += 1
        while (linha[cont] != ','):
            aNasc += linha[cont]
            cont += 1
        cont += 1
        while (linha[cont] != ','):
            cargo += linha[cont]
            cont += 1
        cont += 1
        while (linha[cont] != ','):
            valorSalario += linha[cont]
            cont += 1
        cont += 1
        while (linha[cont] != ','):
            dCont += linha[cont]
            cont += 1
        cont += 1
        while (linha[cont] != ','):
            mCont += linha[cont]
            cont += 1
        cont += 1
        while (linha[cont] != '\n'):
            aCont += linha[cont]
            cont += 1
        cont = 0
        if (cpf == cpfPesquisa):
            print(
                "\n NOME: {}\n SEXO: {}\n CPF: {}\n DATA DE NASCIMENTO: {}/{}/{}\n VALOR DO SALÁRIO: {}\n CARGO: {}\n DATA DE CONTRATAÇÂO: {}/{}/{}".format(
                    nome, sexo, cpf, dNasc, mNasc, aNasc, valorSalario, cargo, dCont, mCont, aCont))

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tentou fazer assim?

def consultar_funcionario():
    nome = ""
    sexo= ""
    cpf = ""
    dNasc = ""
    mNasc = ""
    aNasc = ""
    cargo = ""
    valorSalario = ""
    dCont = ""
    mCont = ""
    aCont = ""
    cont = 0
    print("Consultar Funcionário")
    cpfPesquisa = str(input("cpf: "))
    arquivo = open("cadastros.txt", "r")
    funcionario = arquivo.readlines()
    for linha in funcionario:
        while (linha[cont] != ','):
            nome, sexo, cpf, dNasc, mNasc, aNasc, cargo, valorSalario, dCont, mCont, aCont += linha[cont]
            cont += 1
        cont += 1
        while (linha[cont] != '\n'):
            aCont += linha[cont]
            cont += 1
        cont = 0
        if (cpf == cpfPesquisa):
            print(
                "\n NOME: {}\n SEXO: {}\n CPF: {}\n DATA DE NASCIMENTO: {}/{}/{}\n VALOR DO SALÁRIO: {}\n CARGO: {}\n DATA DE CONTRATAÇÂO: {}/{}/{}".format(
                    nome, sexo, cpf, dNasc, mNasc, aNasc, valorSalario, cargo, dCont, mCont, aCont))

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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

  • Conteúdo Similar

    • Por Falcon89
      Antes de minha dúvida, deixo algumas considerações:
      - Estou em nível de aprendizagem, então, talvez a idéia e o script possa parecer bem "amador"
      - A dúvida não corresponde nada a função ou biblioteca Date, o ano utilizado é ficticio, no caso começando no ano de valor 1;
      - A minha dúvida se relaciona a POO, a utilização do Python como ilustração é meramente ilustrativa.

       

      Vamos a dúvida:
      Então eu criei uma classe chamada tempo com atributo ano, e uma classe pessoa com apenas os atributos em questão, a data de nascimento e a idade. O que eu queria que acontecesse, se possivel, era que ao instanciar uma nova pessoa, ela pegasse o ano atual do objeto 'tempo' já instanciado, e jogasse como ano de nascimento, e já setasse a idade da pessoa, subtraindo o ano atual do objeto tempo pela data de nascimento, fica meio confuso para explicar vou tentar dar um exemplo:
      Supondo que criei o 'tempoObj', que tem o valor do 'tempoObj.ano=1', nesse periodo eu instancio um objeto 'pessoaObj', então eu queria que essa pessoa pegasse o valor do ano que no caso seria 1 e jogasse na "pessoaObj.data_nascimento"que agora teria o valor de 1 e ano atual que também seria o mesmo valor e já setando atravéz da subtração a 'pessoaObj.idade' como 0, em tempo de execução, chamando a funçao avancar_ano() umas 3 vezes, o valor do ano atual seria 'tempoObj.ano = 4', nesse caso a idade dessa pessoa teria que seria 3, porem ao passar "tempoObj.ano" como argumento para data de nascimento e ano atual, ele sempre irá passar o mesmo valor para ambos fazendo com que a idade sempre seja 0.
       Nesse caso existe alguma forma que o valor seja passado para o metodo data_nascimento, some ao instanciar a classe pessoa, e o que o valor recebido so ano do tempoObj seja correspondente ao ano que esta armazenado no tempoObj.ano no momento de execução.
      Já tentei varias formas e sempre chego na mesma, se ficou entendido a questão e se é que existe uma solução, alguém tem essa solução? Desde já agradeço, e peço desculpa se não fui tão claro ao apresentar o problema. 
    • Por leoteixeira2
      Ola pessoal, blz ??? 
       
      Galera estou com uma grande dificuldade para fazer uma consulta MYSQL. Preciso que retorne os produtos e a quantidade venda do mesmo para cada funcionario. Como a tabela a baixo:
       
      ESPECIFICACAO
      TOTAL_VENDAS_LUCAS
      TOTAL_VENDAS_LUIZ
      TOTAL_VENDAS_MARCELO
      PRECO_SC
      PRECO_PR
      CUSTO
      FANDANGOS
      3.5
      6.7
      7.0
      7.90
      8.50
      5.00
      COCA COLA
      5.6
      5.6
      8.0
      8.50
      8.70
      6.00
      ALCATRA
      12.4
      8.2
      6.4
      15.78
      14.47
      10.00
      CERVEJA
      44.8
      54.9
      5.3
      14.75
      10.64
      12.36
      BARALHO
      32.9
      5.0
      4.8
      5.74
      6.20
      4.20
       
      Porém não sei como que estrutura  varios WHERE na mesma consulta, porque são varios funcionarios(5). Tipo o código a baixo só me retorna os valores do funcionario Luiz Henrique. Minha duvida então é o seguinte, como que faço para ter o total_venda de cada funcionario em uma mesma consulta como na tabela acima.
      SELECT DISTINCT(especificacao), preco_sc, preco_pr, custo, SUM(venda_sc) + (venda_pr) as total_venda_luiz FROM pagamentos where funcionario=("Luiz Henrique") and (dia >='01' and dia <='31') and mes=('11') and ano=('2018') GROUP BY especificacao;  
      Alguem poderia me dar uma luz por favor ???? OBRIGADOOO
    • Por leoteixeira2
      Ola pessoal, blz ??? 
       
      Galera estou com uma grande dificuldade para fazer uma consulta MYSQL. Preciso que retorne os produtos e o valor total da venda do mesmo para cada funcionario. Como a tabela a baixo:
       
      ESPECIFICACAO
      TOTAL_VENDAS_LUCAS
      TOTAL_VENDAS_LUIZ
      TOTAL_VENDAS_MARCELO
      PRECO_SC
      PRECO_PR
      CUSTO
      FANDANGOS
      3.5
      6.7
      7.0
      7.90
      8.50
      5.00
      COCA COLA
      5.6
      5.6
      8.0
      8.50
      8.70
      6.00
      ALCATRA
      12.4
      8.2
      6.4
      15.78
      14.47
      10.00
      CERVEJA
      44.8
      54.9
      5.3
      14.75
      10.64
      12.36
      BARALHO
      32.9
      5.0
      4.8
      5.74
      6.20
      4.20
       
      Porém não sei como que estrutura  varios WHERE na mesma consulta, porque são varios funcionarios(5). Tipo o código a baixo só me retorna os valores do funcionario Luiz Henrique. Minha duvida então é o seguinte, como que faço para ter o total_venda de cada funcionario em uma mesma consulta como na tabela acima.
      SELECT DISTINCT(especificacao), preco_sc, preco_pr, custo, SUM(venda_sc) + (venda_pr) as total_venda_luiz FROM pagamentos where funcionario=("Luiz Henrique") and (dia >='01' and dia <='31') and mes=('11') and ano=('2018') GROUP BY especificacao;  
      Alguem poderia me dar uma luz por favor ???? OBRIGADOOO
    • Por leoteixeira2
      Ola pessoal, blz ??? 
       
      Galera estou com uma grande dificuldade para fazer uma consulta MYSQL. Preciso que retorne os produtos e a quantidade venda do mesmo para cada funcionario. Como a tabela a baixo:
       
      ESPECIFICACAO
      TOTAL_VENDAS_LUCAS
      TOTAL_VENDAS_LUIZ
      TOTAL_VENDAS_MARCELO
      PRECO_SC
      PRECO_PR
      CUSTO
      FANDANGOS
      3.5
      6.7
      7.0
      7.90
      8.50
      5.00
      COCA COLA
      5.6
      5.6
      8.0
      8.50
      8.70
      6.00
      ALCATRA
      12.4
      8.2
      6.4
      15.78
      14.47
      10.00
      CERVEJA
      44.8
      54.9
      5.3
      14.75
      10.64
      12.36
      BARALHO
      32.9
      5.0
      4.8
      5.74
      6.20
      4.20
       
      Porém não sei como que estrutura  varios WHERE na mesma consulta, porque são varios funcionarios(5). Tipo o código a baixo só me retorna os valores do funcionario Luiz Henrique. Minha duvida então é o seguinte, como que faço para ter o total_venda de cada funcionario em uma mesma consulta como na tabela acima.
      SELECT DISTINCT(especificacao), preco_sc, preco_pr, custo, SUM(venda_sc) + (venda_pr) as total_venda_luiz FROM pagamentos where funcionario=("Luiz Henrique") and (dia >='01' and dia <='31') and mes=('11') and ano=('2018') GROUP BY especificacao;  
      Alguem poderia me dar uma luz por favor ???? OBRIGADOOO
    • Por Giovanni Lopes
      Giovanni Lopes
      Membro novo · 15 h Olá, estou estudando python para desenvolver uma ferramenta que vai me ajudar a alimentar um outro programa que ja utilizo, pode ser confuso kk, mais é pq realmente o problema que me motivou a desenvolver essa ferramenta é bem especifico, em fim, ja tenho algumas coisas na cabeça sobre como desenvolver essa ferramenta, mais uma incógnita
      que tenho é qual o tipo de interação usada para gerar esse tipo de diagrama da imagem anexada?
      esse diagrama foi criado no outro programa que ja utilizo, e preciso que a ferramenta faça a mesma coisa,
      basicamente oq quero saber é como fazer para que o usuário possa clicar em 2 conectores e o programa exibir uma linha interligando esses 2 pontos clicados.
      Para informação: esse é um diagrama de fusões de fibra óptica, onde os "conectores" representam fibras de um cabo (conjunto de conectores) e as linhas que interligam os conectores são as fusões, assim facilitando a documentação deste procedimento.
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.