quarta-feira, 31 de dezembro de 2014

Random e Interface - Parte II

No post ANTERIOR, fizemos uma interface e um gerador de números aleatórios. Bom, havia alguns problemas no código.

Erros:

A lista não ficava ordenada, um usuário gostaria de que seu jogo estivesse em ordem crescente.
A lista poderia apresentar números repetidos, imagine o usuário indo jogar e seu código apresentava um, dois ou mais números repetidos.

Esses erros são comuns quando não analisamos o que o usuário poderá fazer. E sabe eles sempre fazem coisas que não acreditamos.

Enfim, vamos melhorar nosso código.

Código antigo ( somente será necessário modificar a função):

#funcao gerar
def gerar():
    listasena=range(6) 
    for i in range(0,5):
        listasena[i]=random.randrange(1,60)
    
    mlbl = Label(text=listasena).pack()



Novo código


#funcao gerar
def gerar():
    listasena = random.sample(range(60),6)
    listasena.sort()
    mlbl = Label(text=listasena).pack()

O que foi modificado?

Foi acrescentado o:

listasena = random.sample(range(1,60),6)

Agora com essa linha, não precisa mais da função for. Definimos o range(1,60) que vai de 1-60, e depois da virgula definimos quantos números aleatórios queremos. Basicamente uma linha nos salvou. E a linha:



listasena.sort()

coloca a lista em ordem.

Bom, isso deixa nosso código pronto para usar.

Código:

from Tkinter import *
import random

#funcao gerar
def gerar():
    listasena = random.sample(range(1,60),6)

    listasena.sort()
    mlbl = Label(text=listasena).pack()

#janela
mJanela = Tk()
mJanela.geometry("200x200")
mJanela.title("Sena")
#janela

#botao
mbtn2 = Button(text = 'Gerar', command = gerar).pack()
#botao

mJanela.mainloop()

terça-feira, 30 de dezembro de 2014

Random e Interface

Imagine que você queira implementar a função random junto à uma interface, e que ao clicar de um botão pelo usuário seria apresentado seis valores para ele jogar na Sena.

Bom, apesar de simples a ideia é um bom treino.

Vamos utilizar o código para criar uma lista com seis valores aleatórios.

#code
import random

#criando a lista com seis valores
k=range(6)

#for para colocar seis numeros aleatorios na lista
for i in range(0,5):
    numero = random.randrange(1, 60);
    k[i] = numero

#apresentar a lista nova
print 'os seis valores: ', k
#code


E o código para desenhar uma janela na tela.


#codigo
from Tkinter import *

mGui = Tk()
mGui.geometry("450x450")
mGui.title("Exemplo")
myButton = Button(text='botao').pack()

mGui.mainloop()#somente necessario no Windows
#codigo


A proposta será juntar esses dois códigos.

Vamos começar. 

 Para que aconteça alguma coisa ao clicar do botão, deve-se acrescentar o código command:


myButton = Button(text='botao'  , command = gerar  ).pack()


O gerar será o nome da função que será chamada ao evento clicar sobre o botão.
 A função será essa:


#funcao gerar
def gerar():
    listasena=range(6) 
    for i in range(0,5):
        listasena[i]=random.randrange(1,60)
    
    mlbl = Label(text=listasena).pack()


Bom, ao clicar no botão será chamada a função gerar, que cria uma lista com seis valores, e os mesmos são trocados por valores aleatórios de 1-60. 
Após isso temos a a linha:


mlbl = Label(text=listasena).pack()

Que chama uma Label que seu texto será o conteúdo da lista.

 

Cada vez que o botão gerar é clicado aparecerá uma linha com código. Ainda tem que se arrumar algumas coisas no código. Depois continuamos.

Código completo:


#codigo

from Tkinter import *
import random

#funcao gerar
def gerar():
    listasena = range(6)
    for i in range(0,5):
        listasena[i]=random.randrange(1,60)
    mlbl = Label(text=listasena).pack()

#janela
mJanela = Tk()
mJanela.geometry("200x200")
mJanela.title("Sena")
#janela

#botao
mbtn2 = Button(text = 'Gerar', command = gerar).pack()
#botao

mJanela.mainloop()
#codigo



Random

Imagine que você precise de um numero aleatório. Bom, em Python isso acaba sendo tranquilo até, pois, temos a função random.

Exemplo:

#code
import random
numero = random.randrange(1, 60);
#code

Nesse exemplo o numero 1 e 60, serão de onde até onde os números serão gerados, e a variável 'numero' será onde o mesmo será armazenado.

Bom, imagine que você queira criar um programa que crie um jogo, de seis números aleatórios (MegaSena é pura coincidência rs).

O legal que achei é poder armazenar os seis números aleatórios em uma lista.

Exemplo:

#code
import random

#criando a lista com s
k=range(6)

#for para colocar seis numeros aleatorios na lista
for i in range(0,5):
    numero = random.randrange(1, 60);
    k[i] = numero

#apresentar a lista nova
print 'os seis valores: ', k
#code

Ainda há uma falha, pois, pode-se haver números repetidos. Depois completo. abs

Interface grafica - parte 2

Imagine agora que você queira colocar algo em sua janela. O básico é um botão, pois, é onde o usuário terá sua primeira iteração.

No Tkinter a sintaxe para botões é bem simples

#code
myButton = Button().pack()
#code

Com esse código simples você implementa um botão em sua janela.

#codigo
from Tkinter import *


mGui = Tk()
mGui.geometry("450x450")
mGui.title("Exemplo")
myButton = Button(text='botao').pack()

mGui.mainloop()#somente necessario no Windows
#codigo

Eu acrescentei o text = 'botao' no segundo código para acrescentar que dentro dos parenteses do Button é onde coloca-se os códigos de cor, texto e evento.



Outro código acrescentado foi o:

mGui.title("Exemplo")

Que coloca um nome na sua janela.



sexta-feira, 26 de dezembro de 2014

Interface gráfica

Uma das coisas que acho mais legal em programar é poder desenvolver um aplicativo com interface para o usuário. Particularmente sou muito visual, prefiro que meus programas sejam voltados para o usuário. Pois, em suma será para eles que será fornecido nosso trabalho.

Em Python temos a biblioteca Tkinter, eu prefiro usar alguma IDE para interface gráfica, mas neste primeiro momento estou usando o modo texto. É um pouco demorado, mas ajuda.

Tkinter

Vamos mostrar o código para uma janela simples.

#codigo
from Tkinter import *

mGui = Tk()
mGui.geometry = ('420x380')
mGui.mainloop()
#codigo

Simples e eficiente.


O código mGui.geometry = ('420x380'), é o que define o tamanho da janela. Tente muda-lo ou remover esse código para verificar como sua janela terá outra dimensão.

Funcao

No mundo da programação as funções são de extrema importância, pois, devemos deixar o código mais limpo. E para mim essa é uma das vantagens da função.

Vamos logo ao exemplo.

Exemplo 1:


def temp():
    d = 2
    return d


print temp()

Aqui temos um caso em que o print chama a função temp()
 que retorna o valor d e será imprimido 2 na tela. Simples mas eficiente.

Outro caso é onde você define um valor a ser utilizado na função temp().

Exemplo 2:


def temp(c):
    d = 2*c
    return d

print temp(2)

A função temp() agora recebe um valor de 2, e dentro dela o 
valor 2 valerá c. Sendo retornado o valor de d que será c*2.

Funções ajudam a deixar o código mais limpo.


Matrizes

Imagine que você tenha uma matriz 2x2, ou lista como chamam.

1 2
2 4
2 5
4 5
5 6

E que estão separadas por um espaço.
Isso é bem comum de se trabalhar, essa lista está salva em um arquivo .txt, ou outro.
Utilizando o código anterior.


matriz = [ map(float, line.split()) for line in file('nome do arquivo.extencao') if
line.strip() ]

Podemos salvar essa lista em matriz, e o que podemos fazer com ela depois?
Bom, temos inúmeras possibilidades.

Mas, uma coisa que acho interessante é podermos separar essa lista 2x2 em duas 1x1. Existe inúmeras maneiras de fazer isso, a que gostei, foi utilizando a função FOR.



FOR


#split matriz2x2 para duas matrix1x1
matrizx=range(0,len(matriz))
matrizy=range(0,len(matriz))

for z in range(0, len(matriz)):
    matrizx[z]=matriz[z][0]
    matrizy[z]=matriz[z][1]
#split matriz2x2 para duas matrix1x1

Nesse caso, teremos duas listas matrizx e matrixy e ainda temos a matrix 2x2.


quarta-feira, 24 de dezembro de 2014

Python e as matrizes

Bom uma coisa que achei muito bom no Python é a possibilidade de trabalhar com vetores ou matrizes. Em outras linguagem isso dá um pouco de trabalho. Mas, agora com o Python ficou tudo melhor.

Exemplos:

a=[1,2,3]
print a, a[2] 

A saída será: [1,2,3], [3]

Em Python e matriz podemos fazer algo interessante, que é chamar um arquivo externo, e com algumas linhas de comando:


matriz = [ map(float, line.split()) for line in file('nome do arquivo.extencao') if
line.strip() ]

Essa linha chama um arquivo de texto e o transforma em matriz: 1x1, 2x2, e assim por diante.

E ainda pode-se ter qualquer extensão.

Facilidade é a regra com Python. 

Python e os lacos

O básico novamente. Acho que em qualquer linguagem de programação a lógica é sempre a mesma, o que diferencia uma da outra é como escrever. Em Python, temos de aprender novamente. Bom vamos à alguns exemplos:

For

for z in range(0,10):
  a = a + 1
  b +=1
print a, b

Esse código simples nos será muito útil, pois, em programação isso é muito comum. E temos também as decisões.

If
 
if a==b :
 print 'a = b'
else
 print 'a !=b'


São casos simples, mas, a partir dai começamos a brincar mais com a linguagem. 

Até

Iniciando em Python

Bom, estou começando a programar em Python. Parece uma ótima linguagem de programação para programas matemáticos, que é minha meta agora.
Não vou perder tempo explicando o que é a linguagem de programação Python.
Só sei que é muito fácil até.

a=1
b=2
c=a+b
print c

Este código simples, sem precisar declarar a variável foi o que me chamou a atenção em Python, podemos ir além do que com as famigeradas linguagens. Bom é isso ai, vamos ver o que mais podemos fazer e vou postando.

 Abs

P.s.: link para fazer o download do Python. https://www.python.org/
Um editor de texto bom e leve é o PyScripter. https://code.google.com/p/pyscripter/