Bem-vindo: Sex, 29 de Março 2024, 0:08 Pesquisa avançada

Programação em Python

Escreveu alguma aplicação ou script que quer partilhar? Ou conhece algo que quer partilhar? Sabe alguma linguagem de programação e quer partilhar esse conhecimento com um tutorial? Tem alguma dúvida em alguma linguagem? Então este é o sítio certo.

Programação em Python

Mensagempor Luis Cardoso » Seg, 6 de Fevereiro 2012, 15:56

Bom, de momento encontro-me a programar em Python e criei este pequeno pedaço de código que me é útil para o que estou a fazer, mas achei que poderia ser útil para outros utilizadores (por exemplo para criação de mapas em jogos, etc). Este programa retorna a aproximação entre dois pontos como sendo uma saída de uma função seno, e assim ao serem usados pontos aleatórios distribuídos segundo o eixo dos XX, em vez de se realizar a união dos pontos por intermédio de uma linha, esta união é suavizada através de curvas de seno (ver imagem).

Dependências



Para correr este código é necessário instalar os seguintes pacotes:
sudo apt-get install python-numpy python-matplotlib


Código



Código: Selecionar todos
#! /usr/bin/env python
# -*- Mode: Python; coding: utf-8; indent-tabs-mode: nil; tab-width: 4 -*-
'''
Created on Feb 6, 2012

@author: luis
'''

import numpy as np
import matplotlib.pyplot as plt

# Define a funcao

def aproxima_curva(x,y):
    quant = 20.0
    passo = (x[1] - x[0]) / quant
    xf = np.arange(0.0, x[len(x) - 1] + passo, passo)
    yf = np.arange(0.0, x[len(x) - 1] + passo, passo)
    for n in range(len(xf)):
        if n % quant == 0 and (n / quant + 1) < len(x):
            a = y[n/quant]
            b = y[n/quant + 1]
            c = ((b - a) / 2)
        elif (n / quant + 1) >= len(x):
            a = y[n/quant]
            b = a - 1
            c = ((b - a) / 2)
       
        if n >= quant:
            m = (n - (int(n / quant) * quant)) / quant
        else:
            m = n / quant
        yf[n] = a + c - (c * np.cos(m * np.pi))
    return (xf, yf)

# Fim da funcao

# Executa codigo de teste a funcao
if __name__ == '__main__':
    passo = 0.5
   
    x = np.arange(0.0, 10.0 + passo, passo)
    y = np.random.random(len(x))
    b = len(x)
    print b, '\n', y
   
    x1, y1 = aproxima_curva(x,y)
   
    plt.figure()
    plt.plot(x, y, ':', x1, y1)
    plt.legend(['y[x]', 'y(x)'])
    plt.axis([-1.0, 11.0, -1.0, 2.0])
    plt.title('Aproximacao por senos')
    plt.show()


Resultado




(clique na imagem para a ver melhor)


Claro que o código ainda precisa de ser otimizado, por isso se houver sugestões, serão bem vindas ;)
ImagemImagem
«Escolhe um trabalho de que gostes, e não terás que trabalhar um só dia na tua vida» - Confúcio
Avatar do usuário
Luis Cardoso
Redator
 
Mensagens: 10455
Registrado em: 26 Maio, 2011
Localização: Portugal

Re: Programação em Python

Mensagempor Bitetti » Qui, 22 de Março 2012, 2:34

muito show
Avatar do usuário
Bitetti
 
Mensagens: 875
Registrado em: 03 Janeiro, 2012
Localização: São Paulo

Re: Programação em Python

Mensagempor Luis Cardoso » Qui, 22 de Março 2012, 9:58

Bitetti » 22 Mar 2012, 02:34 escreveu:muito show

:obrigado:
ImagemImagem
«Escolhe um trabalho de que gostes, e não terás que trabalhar um só dia na tua vida» - Confúcio
Avatar do usuário
Luis Cardoso
Redator
 
Mensagens: 10455
Registrado em: 26 Maio, 2011
Localização: Portugal

Re: Programação em Python

Mensagempor Claudio Novais » Qui, 22 de Março 2012, 12:34

Parabéns Luís, entraste logo a abrir! Se houver pessoal por aqui a disponibilizar outros "snippets" seria muito interessante!
Avatar do usuário
Claudio Novais
Editor do Ubuntued
 
Mensagens: 16869
Registrado em: 25 Maio, 2011

Re: Programação em Python

Mensagempor Luis Cardoso » Qui, 22 de Março 2012, 20:26

Claudio Novais » 22 Mar 2012, 12:34 escreveu:Parabéns Luís, entraste logo a abrir! Se houver pessoal por aqui a disponibilizar outros "snippets" seria muito interessante!

:lol:
:obrigado:
Ainda ando a estudar o Python, pois ainda há muita coisa que não sei xD
ImagemImagem
«Escolhe um trabalho de que gostes, e não terás que trabalhar um só dia na tua vida» - Confúcio
Avatar do usuário
Luis Cardoso
Redator
 
Mensagens: 10455
Registrado em: 26 Maio, 2011
Localização: Portugal

Re: Programação em Python

Mensagempor Luis Cardoso » Seg, 23 de Abril 2012, 15:33

Como criar miniatura de imagens por intermédio do Python?




Primeiro de tudo precisa de instalar o módulo PIL (Python Imaging Library) da seguinte forma:
sudo apt-get install -y python-imaging


Depois é criar o script para ser usado no Nautilus, da seguinte forma:
gedit ~/.gnome2/nautilus-scripts/jpg_thumbs


Cole o seguinte texto no ficheiro:
Código: Selecionar todos
#!/usr/bin/env python
# -*- Mode: Python; coding: utf-8; indent-tabs-mode: nil; tab-width: 4 -*-

import os, sys
import Image

size = 128, 128

for infile in sys.argv[1:]:
    outfile = os.path.splitext(infile)[0] + ".thumbnail"
    if infile != outfile:
        try:
            im = Image.open(infile)
            im.thumbnail(size, Image.ANTIALIAS)
            im.save(outfile, "JPEG")
        except IOError:
            print "cannot create thumbnail for", infile


Depois guarde o ficheiro, feche-o e de seguida execute o seguinte comando:
chmod +x ~/.gnome2/nautilus-scripts/jpg_thumbs


A partir de agora pode criar as suas miniaturas bastando clicar na imagem com o direito do mouse e seleccionar o script criado. Isto apenas serve para imagens!

Código inspirado aqui, onde alterei o filtro usado ao redimensionar a imagem!
ImagemImagem
«Escolhe um trabalho de que gostes, e não terás que trabalhar um só dia na tua vida» - Confúcio
Avatar do usuário
Luis Cardoso
Redator
 
Mensagens: 10455
Registrado em: 26 Maio, 2011
Localização: Portugal

Re: Programação em Python

Mensagempor Luis Cardoso » Ter, 19 de Junho 2012, 16:11

Para quem pretende criar um ficheiro html e/ou xml, aqui fica um pequeno exemplo:
Código: Selecionar todos
#!/usr/bin/env python
# -*- Mode: Python; coding: utf-8; indent-tabs-mode: nil; tab-width: 4 -*-
# Date: 2012.06.19
# Autor: luis

def conteudo_tag(nome_tag, conteudo, tipo=0):
    if tipo == 0:
        return '<'+nome_tag+'>'+conteudo+'</'+nome_tag+'>'
    else:
        return '<'+nome_tag+'>\n\t'+conteudo+'\n</'+nome_tag+'>'

if __name__ == '__main__':
    print conteudo_tag('p', conteudo_tag('b','teste 01'), 1)
   


Tendo a seguinte saída:
Código: Selecionar todos
<p>
   <b>teste 01</b>
</p>


Simples não?
ImagemImagem
«Escolhe um trabalho de que gostes, e não terás que trabalhar um só dia na tua vida» - Confúcio
Avatar do usuário
Luis Cardoso
Redator
 
Mensagens: 10455
Registrado em: 26 Maio, 2011
Localização: Portugal

Re: Programação em Python

Mensagempor portaro » Qui, 28 de Junho 2012, 10:06

Dá imenso jeito, sepuder continue postando destes scripts, para termos aqui um mini acervo.

portaro
 
Mensagens: 459
Registrado em: 29 Junho, 2011
Localização: Portugal

Re: Programação em Python

Mensagempor Luis Cardoso » Qui, 28 de Junho 2012, 10:38

portaro » 28 Jun 2012, 10:06 escreveu:Dá imenso jeito, sepuder continue postando destes scripts, para termos aqui um mini acervo.

Sempre que puder, irei postar um ou outro. Aliás tenho de deixar depois uma atualização a este último!
ImagemImagem
«Escolhe um trabalho de que gostes, e não terás que trabalhar um só dia na tua vida» - Confúcio
Avatar do usuário
Luis Cardoso
Redator
 
Mensagens: 10455
Registrado em: 26 Maio, 2011
Localização: Portugal


Voltar para Scripts, programação e aplicações em desenvolvimento

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 61 visitantes

cron