Ir ao conteúdo
  • Cadastre-se

fspjonny

Membros Plenos
  • Total de itens

    236
  • Registro em

  • Última visita

  • Qualificações

    N/D

Reputação

138

Sobre fspjonny

  • Data de Nascimento 19/07/1976 (43 anos)

Informações gerais

  • Cidade e Estado
    Rio de Janeiro/RJ
  • Sexo
    Masculino

Outros

  • Ocupação
    TI
  1. Agora consegui compreender sua dúvida, sim realmente o Python faz referência a objetos criados, acho que você está em um área que eu não estudo, deve ser de Data Science, correto? Bom, tudo que vou dizer aqui você já deve saber, mas como é um assunto de aprendizagem, tem gente que vai ler e talvez não saiba disso sobre o Python. TUDO em absoluto no Python é tratado como um objeto e uma vez criado, ele pode ser referenciado e reaproveitado. É uma forma inteligente da Python em poupar ciclos de processamento e alocação de memória, fazer reaproveitamento do objeto Quando você associa uma lista por exemplo a uma variável, você está passando uma referência do objeto original. numeros = 1 # Uma variável que recebe um valor inteiro print(type(numeros)) # Imprime o tipo do objeto print(id(numeros)) # Imprime o ID do objeto lista = [1,2,3,4] numeros = lista # Aqui reaproveito o objeto "numeros", numeros é só uma etiqueta # para humanos rotularem o ID do objeto, pois o ID é o que o PC entende. # Imprime o tipo do objeto print(type(lista)) print(type(numeros)) # Imprime o ID do objeto print(id(numeros)) print(id(numeros)) """ Produz na tela os seguintes resultados: <class 'int'> O tipo 1678362528 O ID do objeto na memória <class 'list'> A lista [1,2,3,4] <class 'list'> O reaproveitamento do objeto por associação 3417928 3417928 Veja acima, o mesmo ID para ambos os objetos, mostra que são agora do mesmo tipo e endereço, herdando os valores do objeto por referência, você poderá mudar valores no objeto que recebeu a referência e pode novamente mudar sua característica como objeto(tipagem), pois o Python tem tipagem dinâmica e forte. """ No seu caso em específico não sei porque utilizar o deepcopy, a não ser sob essa justificativa de manter dados originais em um objeto e só alterar nas cópias(ou o contrário), acho eu que é uma das aplicações em Data Science, você tem uma coleção de dados e precisa iterar sobre eles e manter eles originais e inalteráveis ou trabalhando sobre as cópias. Más com isso você pode aumentar o custo de processamento dependendo do que se destina o código. Obrigado por esclarecer a sua dúvida aqui, até eu queria saber o que era....kkkk!
  2. Sim, muito fora da indentação em alguns pontos do código. Leia o guia de estilos do Python o PEP8: https://wiki.python.org.br/GuiaDeEstilo?action=fullsearch&context=180&value=indentação&titlesearch=Títulos Leia a parte Formatação do Código/indentação No seu caso ai você está usando o dobro do recomendado, conte as colunas até o try: e a partir do try: deve haver nova indentação igual a recomandada e o seu except: deve estar no mesmo nível de indentação do seu try: depois que ele for corrigido, e o código que vier depois do seu except: deve receber a mesma indentação de try:
  3. Você tem que ver como está usando o python: voce pode instalar de dentro dentro da pasta do Python usando o PIP, mas isso não é recomendado, porém funciona da mesma forma Ou voce pode criar um ambiente virtual com o virtualenv que você baixa usando o PIP ou pelo próprio python pelo comando: python -m venv nome_da_venv. Por exemplo: python -m venv venvp38132 Nesse caso ai minha virtualenv se chamará venvp38132, porque estou indicando a versão do Python que vou utilizar nela no caso Python 3.8.1 32bits = p38132 Porque eu sugiro essa forma de trabalho? Simples, nem todas as aplicações python vão rodar na versão mais nova, porque os complementos ao Python como pygame e sua dependências, podem ainda não ter tido atualizações para versão mais recente do Python. Prefira sempre trabalhar com versões que você sabe que funciona tudo e crie uma virtualenv assim. Para ativar o ambiente virtual voce deve entrar na pasta onde voce criou a sua virtualenv, o que é sugerido na comunidade Python é que se crie na raiz do PC o C:\, uma pasta com o nome do projeto e dentro dela a virtualenv. Por exemplo: C:\Projetos Django\venvp38132 Crie a pasta da venv pelo comando que eu passei acima e você tem que estar dentro da pasta Projetos Django Dentro dessa pasta Projetos Django, voce poderá ter outras pastas que serão so seus projetos de cada cliente. C:\Projetos Django\site_mercadinho C:\Projetos Django\site_loja_de_roupas etc... Se voce estiver usando o Pycharm ao criar um novo projeto você deve apontar para essa pasta Projetos Django e apontar que o interpretador do Python que voce quer usar está dentro da virtualenv que voce criou venvp38132. O caminho sempre será: C:\xxxxxx\venv\Scripts\phyton.exe Neste mesmo caminho você tem 2 arquivos .bat o, activate.bat e o deactivate.bat Se no caminho voc executar o C:\xxxxxx\venv\Scripts\activate.bat Seu ambiente virtual será carregado e seu prompt de comando vai mudar para: (venv) C:\xxxxxx\venv\Scripts> É neste prompt de comando com a virtualenv funcionando que você deve instalar todos os complementos e dependências do seu projeto Python. pip install pygame pip install Pillow Você pode até fechar todas as pastas do caminho com o comando cd\ que o prompt da venv vai continuar funcionando isso não interfere na instalação de pacotes e complementos e você a verá assim: (venv) C:\> e se voce digitar deactivate, ele volta ao normal assim: C:\> Mas isso não vai atualizar o Python que está instalado no seu C:\Program Files ou C:\Program Files (x86), lá ele não terá essas duas instalações, porque você as instalou no ambiente virtual, para um determinado projeto. Dessa forma voce pode várias virtualenvs, com diferentes versões de Python, para atender os projetos que voce demandar sem que isso sobrecarregue os projetos com módulos desnecessários ao projeto que estiver envolvido. Eu mesmo uso 3 versões diferentes do Python: Python3.7 64bits, Python3.8.1 32bits e Python3.8.1 64bits, e estruturas de pastas diferentes na raiz C:\ C:\Django C:\Aplicativos Em cada uma dessas duas pastas eu tenho uma venv de acordo com a versão e complementos de Python que preciso. Cada projeto meu criado no PyCharm, apontam para essas duas pastas e dentro tem as subpastas com o nome dos projetos, que são as raízes. e automaticamente o Pycham já carrega no terminal a virtualenv que está dentro de cada uma delas. Espero que isso tenha esclarecido um pouco para você o porque do seu PyGame, não estar sendo visto no seu projeto, tente trabalhar dessa forma e te garanto que você verá que é mais fácil lidar com diferentes módulos e complementos e atualizar eles.
  4. O código fonte está aí acima é só utilizar ele, mas avise aqui se caso ele não esteja visível para você.
  5. O teu dicionário se for exatamente como está montado ai no exemplo, ele está bagunçado, pois a chave dele é: {'Fulano' , e o valor é '123456789'} O Correto com aspas simples seria assim: {'Fulano': '123456789'} ou se usar aspas duplas {"Fulano": "123456789"} Um dicionário é representados na forma de chave e valor, onde a chave é usada para referenciar um determinado valor e no seu caso sua estrutura está fora do padrão. Não sei como voce está gerando esse valor, mas tem que consertar ele, está errado e quando você conseguir consertar isso você vai poder extrair corretamente os dados e de diversas formas. dicionario = {'Fulano':'123456789','Sicrano':'1011121314','Beltrano':'15161718'} lista = dicionario.items() # te retorna uma dict_items que é também um iterável. #exemplo1 # partindo desse iterável [lista], voce escolhe o que fazer e como extrair os dados. for a,b in lista: print(a,b) #exemplo2 # ou colocar em lista sem as chaves nova_lista = [] for a,b in lista: nova_lista.append(f'{a}={b}') # estou formatando a string para ser chave = valor dentro da lista. print(nova_lista) # Com essa nova_lista voce pode associar pelo índice da lista e buscar um só valor e atribuir a uma # variável, ou vários valores a várias variáveis #exemplo3 indice0 = nova_lista[0] print(indice0.replace('=','/')) # posso remover ou trocar o que estiver dentro da string por qualquer coisa print(indice0.replace('=',' ')) # troco por espaço entre os valores. #exemplo4 # Posso ainda dividir toda ela em caracteres individuais para dentro de uma lista print(list(indice0)) Agora se o teu problema é apenas as chaves { }, tem uma gambiarra horrível de se fazer, mas que remove somente as chaves e que você poderá extender isso para remover os acentos únicos(') e duplos(''). Mas são coisas que vão completamente na contramão dos padrões de programação, no entanto se é possível de fazer um mosntro, eis que te apresento um monstro que não se pode falar que é um código: acho que foi a pior coisa que já demonstrei com o Python, nem sei porque ele faz isso! ou pior porque fui fazer isso! gambiarra = str({"{'Fulano'": " '123456789'}"}) # Converte isso para string com o str. gambiarra = gambiarra.replace('{', '')# tira os { gambiarra = gambiarra.replace('}', '')# tira os } gambiarra = gambiarra.replace('"', '')# tira os " gambiarra = gambiarra.replace("'", '') # tira os ' gambiarra = gambiarra.replace(':', '') # tira os : print(gambiarra) O resultado na tela: Tô aqui torcendo para você não usar essa opção suja e optar por corrigir seu dicionário e poder aplicar as formas pythônicas de codigo que mostrei no começo!
  6. Ok, me desculpe, mas não posso ajudá-lo não conheço essa discord, o que posso lhe sugerir é que tente ler e entender todas as classes e métodos desse módulo e assim você poderá ser capaz talvez de achar alguma referência sobre como os usuários são manipulados por esse bot, que no seu caso o interesse está em: banir ou expulsar do servidor. Quando eu estou a estudar uma biblioteca, eu faço isso no pycharm, com o a tecla control pressionada, eu passo o mouse sobre as classes e métodos e vejo de onde elas extendem ou são herdadas, assim faço o caminho até chegar na superclasse, geralmente os programadores tendem a deixar comentários ou docstrings para informar uso, ou problemas com alguma implementação ou até notas de correções feitas ou a serem implementadas. Assim sendo ao entender como funciona o módulo todo e suas classes e métodos, você poderá criar, se for o caso, a sua própria classe extendendo de discord.py ou mesmo sobrescrevendo(override) um método de discord.py, e assim implementar essas funcionalidades que você precisa. Para expulsar alguém é relativamente fácil se olhar pela lógica de que um usuário registrado, tem sempre o mesmo nick name, ou até mesmo se ele mudar o nick name, o cadastro dele deve possuir um ID único e que o usuário não vê, porque não tem acesso e o valor é imutável. Basta criar uma lista de bloqueios e colocar nessa lista esses ID's que não terão permissão de login, independente de nick. Quanto ao banimento, penso que é mais complicado, mas não impossível, pois você tem que capturar o IP e o mac address do usuário, para fazer com que nunca mais ele consiga logar na conta, mas isso é uma verificação um pouco inconsistente porque ele pode usar um gateway diferente, usar um terminal diferente, ou uma máquina virtual que pode ter mac address diferente, etc... Eu não tenho experiência em desenvolvimento para protocolos de rede, mas o cabeçalho IP é cheio de informações que podem lhe ser úteis para realizar bloqueios. Apesar de ter um pouco de conhecimento com Python, eu nunca estudei(nem fui procurar ainda, kkk) nada relativo a isso, mas sei que no C, C++ ou C#, existem bibliotecas nativas de manipulação de endereços lógicos, acho que seria bom você postar uma pergunta nessas salas, sobre como ter um programa que rode com Python e possa bloquear e banir pessoas pelo endereço lógico. Provávelmente(90%) isso pode ser feito também no Python, mas como eu disse, desse assunto ainda não me interei, então não tenho como lhe ajudar muito mais além do que esse textão todo que lhe escrevi dando essas dicas de uma possível busca de solução. adicionado 34 minutos depois Fui olhar o projeto discord.py e achei o repositório oficial no github: https://github.com/Rapptz/discord.py Tem o github do próprio Rapptz: https://github.com/Rapptz Mas achei também a lista dos colaboradores do projeto: https://github.com/Rapptz/discord.py/graphs/contributors Se for o caso tenta enviar uma mensagem com sua dúvida para o próprio Rapptz, ou outra pessoa que colabora no projeto, a resposta poderá ser mais acertiva do que ler o projeto todo ou ter que estudar todos os módulos que contemplam a biblioteca do discord.py Eu baixei ela para ver e tem um bocado de módulo para ler 58 total, sendo 47 funcionalidades do discord e mais 11 dentro ext....kkkk e duas DLLs em bin Mas tem muita coisa ali que é mais do contexto gráfico(templates) e as funcionalidades, tem por base duas DLLs (libopus-0.x64.dll e libopus-0.x86.dll), ambas são usada em outros projetos de criação de bots pelo que lí. Então quem criou(e colabora com) o discord.py, deve saber se tem alguma implementação da função que é foco da sua dúvida.
  7. Não sei se já procurou nessa documentação, mas dá uma olhada se é a mesma: https://discordpy.readthedocs.io/en/latest/index.html
  8. Ok, se precisar é só chamar!
  9. Ok!, Você estava perto da solução! Acho que posso te mostrar uma outra maneira ainda mais fácil de fazer isso com uso de biblioteca do Python, usando o módulo pickle. O melhor mesmo seria você implementar sua agenda usando o SQLite3(nativo também do Python3), e voce teria muitas vantagens na sua aplicação em relação a usar arquivos TXT, e apesar de que eu não sei a finalidade do seu aplicativo, mas vamos lá! Você pode criar duas funções: -Uma para criar o dicionário e adicionar mais itens(update - leia em dicionários python), -Uma outra função para ler o arquivo e carregar o dicionário para pesquisa. No código abaixo coloquei os 3 elementos que fazem com que o programa funcione da forma como você precisa, basta agora arranjar eles em suas funções e chamá-las import pickle """Função1() Salvar os dados em um arquivo TXT para um formato de dicionário, falta implementar a entrada de novos dados e atualização do dicionário. """ dic={ 'Fulano1':987867127,'Fulano2':894567444,'Fulano3':973165190,'Fulano4':999866123} # Dicionário exemplo arq = open('dicionario.txt','wb') # Se o arquivo não existir será criado. pickle.dump(dic,arq) arq.close() """Função2() Carregar os dados de um arquivo TXT no formato de um dicionário. """ arq = open('dicionario.txt','rb') dic = pickle.load(arq) arq.close() print (dic) # Essa linha deve ser removida, coloquei para exibir no exemplo impresso! # Interface de usuário para manipulação da agenda (consulta apenas) pessoa = input('Buscar pessoa na agenda por nome: ') if pessoa in dic: # Se a pessoa estiver no dicionário print(f'{pessoa} = {dic.get(pessoa)}') else: print(f'Esta pessoa:[{pessoa}], não está na agenda.') Já está com a faca e o queijo na mão, agora é só dar uma pesquisada no termos utilizados e complementar o programa! Veja que no resultado da tela que eu imprimi de propósito o dicionário e abaixo dela está a interface de entrada de dados feita pelo usuário.
  10. Pelo que entendi, você consegue carregar o txt e montar um dicionário. Então a pesquisa poderá ser feita dessa forma: # digamos que aqui voce tem seu dicionário carregado a partir do seu txt. lista_telefone = {'Fulano1':987867127,'Fulano2':894567444,'Fulano3':973165190,'Fulano4':999866123} pessoa = input('Buscar pessoa na agenda por nome: ') if pessoa in lista_telefone: # Se a pessoa estiver no dicionário print(f'{pessoa} = {lista_telefone.get(pessoa)}') else: print(f'Esta pessoa:[{pessoa}], não está na agenda.') Se isso não te ajudar, seria bom colocar seu código aqui completo que eu teria uma visão melhor do que você está fazendo! Na tela, o código acima apresenta esses resultados: Quando tem a pessoa no dicionário: E quando não tem a pessoa no seu dicionário:
  11. Me passa uma mensagem privada e eu converso contigo e vejo o que você precisa!
  12. Exatamente apesar de parecerem iguais quando você converte o tipo, ela muda suas características e segue o tipo que voce determinar, fora isso o Python é capaz naturalmente de determinar sozinho o tipo de dado que você associa a uma variável, isso é a tipagem dinâmica. No exemplo que mandei: print(a + b) # imprime 19 pois o sinal de + passa a agir como um sinalizador de uma # concatenação entre tipos iguais strings. # E neste outro exemplo: print(int(a) + int(b)) # imprime um 10, pois trata-se de tipos iguais que foram tipados # para valores inteiros e o sinal de + deixa de ser um # concatenador e passa a ser um operador matemático. Veja: http://blog.abraseucodigo.com.br/python-uma-linguagem-de-tipagem-dinamica-e-forte.html
  13. Show! O ideal seria sempre isso, código pequeno mas eficiente. Porém nem sempre será assim...kkk Esta aqui é uma ótima definição do sum() : https://www.programiz.com/python-programming/methods/built-in/sum O sum() tem como função única fazer isso, iterar sobre um objeto iterável e retornar a soma dele. Você pode iterar sobre objetos de várias formas, cada objeto tem sua forma de acesso, por exemplo uma string, pode-se fazer assim: a,b,c,d = '1976' # Por atribuição múltipla print(a) print(b) print(c) print(d) #----o que acontece aqui? print(a + b) # imprime um 10 ou um 19? print( int(a) + int(b) ) # e aqui? imprime um 10 ou um 19? valor = '1976' # Acesso a string pelo seu índice print(valor[0]) print(valor[1]) print(valor[2]) print(valor[3]) #----o que acontece aqui? print(valor[0] + valor[1]) # imprime um 19 ou um 10? print(int(valor[0]) + int(valor[1])) # imprime um 10 ou um 19? Use esse curso, é bom e é de graça: http://excript.com/curso-de-python.html Não sei se posso fazer aqui esse tipo de indicação aqui, eu dependerei da resposta e autorização de algum dos moderadores deste fórum, portanto vou deixar um nome citado aqui que sempre me atendeu e pode esclarecer melhor. Pode ou não pode @DiF divulgar endereço de outros fóruns estrangeiros aqui?
  14. Não demanda tanto tempo em pouco menos de 1 h você tem isso pronto e mesmo seguindo tutorial, mas se quer pagar alguém, tem um site para desenvolvedores e lá voce poderá contratar um por trabalho feito a valor fixo ou pelo melhor orçamento, o site se chama Workana: https://www.workana.com/
  15. Mas chegou a testar o código que fiz? veja como está a mais simples...é disso que te falei, quando se tem um bom estudo básico, tudo fica mais fácil. E o conhecimento quem vai buscar é você, nenhum curso é totalmente completo, eles na maioria te dão um Norte a ser seguido, dali voce segue a documentação oficial ou troca experiências com outros programadores que conseguiram abstrair mais e reduzir seus códigos. Eu participo de uma pancada boa de grupos estrangeiros, de Kivy, Django, Python, e cada um deles tem uma uma pessoa que sempre está disposta a mostrar mais, e tem até mais didática ao ensinar. Vale a pena participar de fóruns fora do Brasil, isso te enriquece o conhecimento e te ajuda a forçar mais seu inglês e aprender, pois algumas empresas estão aderindo o contato direto do desenvolvedor com o cliente e saber as necessidades, já não se pede mais inglês técnico e sim fluência(conversation and answers), assim pula uma etapa e agiliza processos, ao invés das antigas reuniões em que um funcionário analista de requisitos ia até a empresa e pegava o briefing todo e no retorno a empresa fazia uma reunião onde distribuía as tarefas aos times. Isso tá ficando para trás também.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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...

Aprenda_a_Ler_Resistores_e_Capacitores-capa-3d-newsletter.jpg

ebook grátis "Aprenda a ler resistores e capacitores", de Gabriel Torres

GRÁTIS! BAIXE AGORA MESMO!