Jump to content
Fórum Script Brasil

Graymalkin

Veteranos
  • Content Count

    8415
  • Joined

  • Last visited

Everything posted by Graymalkin

  1. Use os tipos de dados ao declarar as variáveis (caso contrário ele considera como string): Dim dt1 As DateTime = DateTime.Now Dim dt2 DateTime = DateTime.Parse("30/09/2019") Abraços!
  2. Graymalkin

    Dúvida Cruel

    Se o número for inteiro, você pode usar algo assim: numero = raw_input("Digite um número:") if numero.isdigit(): print "É um número!" else: print "Não é um número!" Abraços!
  3. Qual o tamanho do arquivo? Seria bem mais interessante jogar tudo na memória (ler o arquivo inteiro) e depois buscar a informação. Creio que a performance deverá ser melhor. Abraços!
  4. Muito bom, ainda bem que conseguiu resolver o caso. ☺️ Abraços!
  5. Serve on-line? Caso sim, acesse: https://www.onlinegdb.com/online_python_interpreter Abraços!
  6. Faça um teste colocando o texto "teste1-teste2-teste3" na célula A1 e use este código de exemplo: Sub teste() Dim dados() As String Dim d dados = Split(Range("A1").Value, "-") For Each d In dados MsgBox d Next End Sub Abraços!
  7. Você está na máquina onde o PG está instalado? O COPY procura o arquivo localmente no servidor, não vai rolar fazer a partir de um cliente. Abraços!
  8. Graymalkin

    Dúvida com While

    Use um contador, pois diferente do for (onde você tem um número limitado de elementos), o while executa enquanto uma condição estiver sendo atendida. No seu exemplo, 3x4, ele executaria quatro vezes incrementando em 3 o resultado: n1 = int(input("Digite o primeiro valor:")) n2 = int(input("Digite o segundo valor:")) cont = 0 result = 0 while (cont<n2): result += n1 cont += 1 print("Resultado: ", result) Certo? 😉
  9. Aparentemente então a base está corrompida. Uma vez copiei a pasta "data" de um servidor que estava com o HD comprometido por vários bad blocks (que afetaram alguns bancos, mas não afetou o que eu precisava) para outro computador com a mesma versão do PG e funcionou certinho (eu só não conseguia acessar os bancos que não foram copiados completamente). Mas o ideal mesmo seria fazer a restauração pelo backup. Abraços!
  10. Sim, tanto o backup quando a pasta "data" funcionarão, desde que você instale a mesma versão que estava anteriormente. No caso do backup, versões posteriores vão reconhecer também (só não serve tentar usar um backup de uma versão nova em uma versão antiga). Pela instalação antiga você terá como ver qual era a versão usada. Abraços!
  11. Ah tá, eu já ia falar que aqui funcionava normalmente... rsrsrsrs >>> 10 * 0.10 1.0 A vírgula é o nosso separador decimal, mas usa-se o padrão americano quando se programa (então tem que obrigatoriamente usar o ponto no código). Abraços!
  12. O format() apenas coloca os argumentos passados dentro da string, ou seja, {0} vai se tornar o conteúdo de dados[0], e {1} vai se tornar o conteúdo de dados[1] (na primeira linha em que é usado). Daria o mesmo se fizéssemos: dt1 = datetime.datetime.strptime(dados[0] + " " + dados[1], "%Y/%m/%d %H:%M") Apenas o format é uma maneira mais limpa de se formatar strings. Abraços!
  13. Supondo que o seu CSV é assim... 2017/01/01;23:30;2017/01/01;00:30 2017/02/01;23:30;2017/02/01;23:40 2017/03/01;15:45;2017/03/01;17:30 2017/04/10;23:50;2017/04/10;00:30 2017/07/16;23:50;2017/07/17;00:30 ... você poderia fazer isso: import io import datetime import string f = io.open("c:/pasta/teste.csv") linhas = f.readlines() f.close() fout = io.open("c:/pasta/teste_out.csv", "w") for l in linhas: dados = l.replace('\n', '').strip().split(";") dt1 = datetime.datetime.strptime("{0} {1}".format(dados[0], dados[1]), "%Y/%m/%d %H:%M") dt2 = datetime.datetime.strptime("{0} {1}".format(dados[2], dados[3]), "%Y/%m/%d %H:%M") if dt2<dt1: dt2 = dt2 + datetime.timedelta(days=1) dados[2] = dt2.strftime("%Y/%m/%d") print dt1 print dt2 fout.write(string.join(dados, ";") + "\n") fout.flush() fout.close()
  14. Seu servidor está exposto para acesso fora da rede local (ou seja, pela internet)? Tive um problema parecido, só que no meu caso foi um usuário que foi criado com um nome estranho e o usuário postgres deixou de ser superusuário. Creio que tenha sido um bot ou usuário mal intencionado, pois o mesmo se apossou do banco. Fiz backup, desinstalei a versão que tinha, instalei uma versão mais recente (colocando agora uma senha mais segura) e restaurei o banco. Recomendo fazer o mesmo e se for o caso de acesso externo, coloque uma senha mais segura.
  15. Sabendo que o primeiro (e único par) primo é 2, basta testar (if) o resto da divisão (operador %) do número informado, por todos os primos (laço for) até a raiz quadrada dele (math.sqrt()), se o resultado é diferente de zero para todos (operador & ou and) ele é primo e você conta. Estão todas as dicas aí, basta pesquisar e juntar.
  16. Dê uma procurada sobre o componente WebBrowser.
  17. Você tem dois prints no código, um escreve a tabuada e o outro escreve o retorno da função chamada para imprimir a tabuada. Então ou você retorna a tabuada e imprime dentro do loop ou deixa de imprimir no loop o retorno dela (que é None). A segunda opção é só retirar o "print(n1)". Abraços!
  18. Como a mensagem de erro sugere, o problema está na identação (os espaços ou TABs na frente de cada linha). Em outras linguagens você pode colocar espaços a vontade, mas em Python eles precisam estar alinhados, porque é assim que o compilador sabe o quê pertence a o quê. Revise os espaços (ou TABs) que você dá no início de cada linha, porque está extremamente confuso (eu ia tentar consertar, mas realmente não entendi quais os ifs que realmente estão aninhados). Abraços!
  19. Não sei se entendi muito bem o que você quer não, mas se fosse para escrever na TextBox2 o quê estiver escrito na TextBox1, parecendo que está sendo digitado, eu faria o seguinte: TextBox2.Focus() For Each c As Char In TextBox1.Text SendKeys.Send(c) Threading.Thread.Sleep(200) Application.DoEvents() Next Espero ter ajudado!
  20. Este backup aparentemente foi feito com o pg_dump então você deveria usar o pg_restore para restaurá-lo. Abraços!
  21. Graymalkin

    Exercício em Python

    l = [] for i in range(3): l.append(int(raw_input("Digite o %iº inteiro: " % (i+1)))) somaDosPares = sum([x if x%2==0 else 0 for x in l]) print("Soma dos pares: %i" % somaDosPares) Tipo assim?
  22. Troca a linha... id integer NOT NULL DEFAULT nextval('conta_id_seq'::regclass) ... por: id serial NOT NULL Isso acontece porque você precisaria criar a sequência (conta_id_seq) antes de utilizá-la, mas o tipo "serial" já faz isso pra você. Abraços!
  23. Você pode fazer isso percorrendo os números da lista e verificando qual é maior que o digitado, e utilizando o método insert para inserir o mesmo no lugar deste ("empurrando" o restante para frente), como a seguir: lista = [] for x in range(8): n = int(input("Digite um número inteiro: ")) inseriu = False for i in range(len(lista)): if n<lista[i]: lista.insert(i, n) inseriu = True break if not inseriu: lista.append(n) print(lista) Certo? ;) Abraços!
  24. Não sei bem o que você quis dizer com "transformar um arquivo .py em .exe", mas para executar algo (incluindo o prompt) você pode fazer: import os os.startfile("cmd") Abraços!
  25. Durante a instalação você define a senha do usuário "postgres", se você criou outro usuário depois deverá usar a senha que definiu ao criá-lo. Abraços!
×
×
  • Create New...